Add Claude Code GitHub Workflow#2
Merged
Merged
Conversation
This was referenced Nov 20, 2025
MarkusNeusinger
added a commit
that referenced
this pull request
Dec 1, 2025
…1763670247049 Add Claude Code GitHub Workflow
5 tasks
6 tasks
MarkusNeusinger
added a commit
that referenced
this pull request
Dec 17, 2025
- Fix #1: Handle missing remote branches in impl-generate.yml - Check if branch exists before checkout to avoid 'not a commit' errors - Fall back to creating fresh branch from main if remote doesn't exist - Fix #2: Clean up duplicate labels on failure - Remove both 'generate:X' and 'impl:X:pending' when marking as failed - Prevents label accumulation (e.g., both pending and failed) - Fix #3: Auto-close issues when done + failed = 9 - Previously only closed when all 9 were 'done' - Now closes when total (done + failed) reaches 9 - Shows which libraries failed in closing comment - Fix #4: Track generation failures and auto-mark as failed - Count previous failed runs for same spec/library - After 3 failures, mark as 'impl:X:failed' automatically - Posts failure comment explaining the library may not support this plot type
MarkusNeusinger
added a commit
that referenced
this pull request
Dec 17, 2025
…1308) ## Summary Fixes several workflow issues discovered during batch processing of spec-ready issues. ### Fix #1: Branch-Not-Found Errors **Problem:** `fatal: 'origin/implementation/{spec}/{library}' is not a commit` errors when workflow tries to checkout a non-existent remote branch. **Solution:** Check if remote branch exists before checkout, fall back to creating fresh branch from main. ### Fix #2: Duplicate Labels **Problem:** Issues accumulate both `impl:X:pending` and `impl:X:failed` labels when generation fails. **Solution:** Failure handler removes both `generate:X` and `impl:X:pending` when marking as failed. ### Fix #3: Auto-Close with Failures **Problem:** Issues with 8 done + 1 failed stay OPEN because auto-close only triggers on 9 done. **Solution:** Close when `done + failed = 9`, with appropriate summary (shows which libraries failed). ### Fix #4: Generation Failure Tracking **Problem:** When `impl-generate` fails (no plot.png), no PR is created → no review → no repair → library stays `pending` forever. **Solution:** Track generation failures and mark as `impl:X:failed` after 3 consecutive failures. Posts comment explaining the library may not support this plot type. ## Files Changed - `.github/workflows/impl-generate.yml` - Fixes #1, #2, #4 - `.github/workflows/impl-merge.yml` - Fix #3 ## Testing - YAML syntax validated - Logic reviewed against observed failure patterns
MarkusNeusinger
added a commit
that referenced
this pull request
Jan 26, 2026
Critical fixes: - Fix TypeError: flatten tag dict to list for repository call (#6) Changed search_by_tags to receive list[str] instead of dict[str, list[str]] Repository expects flat list of tag values, not nested dict - Add missing dataprep and styling parameters (#1, #7) Added to search_specs_by_tags function signature and docstring These categories were documented but not implemented - Add filter logic for dataprep and styling (#2) Implemented filtering checks similar to other impl-level tags Ensures new parameters actually filter results - Update condition to include dataprep and styling (#3) Modified impl-level filtering condition on line 117 Now checks all 6 impl-level tag categories Improvements: - Add database error handling with helpful messages (#8) Check is_db_configured() before all database operations Provides clear error message if DATABASE_URL not set - Update test mocks to match fixed interface (#5) Tests now verify flattened tag list instead of dict Added new test for dataprep/styling filter parameters Mock is_db_configured to return True in test fixture Verification: - All 16 unit tests passing - Ruff linting and formatting applied - No routing conflicts (#4 verified - no /mcp routes in routers) Related: PR #4132, Issue #4129
This was referenced Feb 14, 2026
4 tasks
7 tasks
MarkusNeusinger
added a commit
that referenced
this pull request
May 6, 2026
…5818) ## Summary Five quick-win items from `agentic/audits/latest.md` (2026-05-05): 1. **Frontend lint CI repair** — 32 errors → 0 (audit Critical #1). 2. **`/seo-proxy/map`** — bot prerender for the network map (audit Critical #5 partial). 3. **evaluate-plot.py** — switch to canonical 6-category rubric + bump model default (audit High #2). 4. **plausible.md** — document FCP/TTFB Web-Vitals events (audit High #3). 5. **CodeQL #101** — already user-dismissed 2026-05-05; called out in PR body, no code change. ## Detail ### 1. Lint repair (`yarn lint` 32→0 errors) - `app/eslint.config.js`: added `IdleRequestCallback`, `IdleDeadline`, `IdleCallbackHandle`, `IdleRequestOptions`, `requestIdleCallback`, `cancelIdleCallback`, `FrameRequestCallback`, `IntersectionObserverCallback`, `IntersectionObserverInit`, `IntersectionObserverEntry` to production globals; added Node `global` to test-entry globals. - 5× `react-hooks/set-state-in-effect`: refactored to React 19's "adjust state on prop change" pattern (`if (prev !== current) { setPrev(current); ... }` during render — no cascading re-render): - `RelatedSpecs.tsx` — combined `setExpanded(false)` + `setLoading(true)` resets into a single `prevDeps` guard. - `SpecDetailView.tsx` — interactive size reset on `selectedLibrary` change. - `DebugPage.tsx` — `setLoading(true)/setError(null)` reset on `[adminToken, reloadCounter]` change. - `SpecsListPage.tsx` — random rotation init driven by `Object.keys(rotationIndex).length === 0` guard (reference-compare on `specList` was attempted first but trips an infinite re-render in the test mock, which returns a fresh `specsData` array each call). - 1× `react-hooks/purity`: `Math.random` in `useFeaturedSpecs.ts` extracted into a module-level `pickRandom<T>(items)` helper. - 3× `no-empty`: sessionStorage swallows in `DebugPage.tsx` annotated with a comment. - 1× unused var `implNoPreview` (`SpecOverview.test.tsx`): now used in the test (was a copy-paste oversight). - 1× unused eslint-disable (`MapPage.test.tsx:413`) removed. ### 2. SEO `/map` handler Mirrors the about/palette pattern in `api/routers/seo.py`. Bots now get a real `<title>` (`Network Map | anyplot.ai`) and a meta description. ### 3. evaluate-plot.py modernization - Replace inline 5-category JSON template (Visual Quality 40 / Spec Compliance 25 / Data Quality 20 / Code Quality 10 / Library Features 5) with the canonical 6-category rubric driven by `prompts/quality-evaluator.md` + `prompts/quality-criteria.md` (Visual Quality 30 / Design Excellence 20 / Spec Compliance 15 / Data Quality 15 / Code Quality 10 / Library Mastery 10 = 100). - `print_quality_result` and the `--verbose` loop updated to the new keys + denominators (was reading `library_features` / `vq…/40` etc., now reads `library_mastery` / `vq…/30`). - `core/config.py`: `claude_model` default bumped from `claude-3-5-sonnet-20240620` (18 months old) to `claude-sonnet-4-6`. ### 4. Plausible docs (FCP/TTFB) `docs/reference/plausible.md`: added FCP and TTFB rows to Custom Events table + Implementation Checklist; bumped total client-side events from 28 → 30. >⚠️ **Follow-up needed**: FCP/TTFB are already emitted from `reportWebVitals.ts` but must also be **registered in the Plausible dashboard** as custom events, otherwise they're silently dropped server-side. Documenting them here doesn't make them appear; that's a separate manual step. ### 5. CodeQL #101 — already dismissed `gh api repos/.../code-scanning/alerts/101` shows `state: dismissed` since `2026-05-05T21:38:46Z` (dismissed by @MarkusNeusinger as "false positive — 'private' is a literal field name in a demo radar-chart axis dataset"). Audit was generated on the same day and listed it as still open. **No code change in this PR for this item.** The audit's broader recommendation — "exclude `plots/` from CodeQL scan" — would require switching from default to advanced code-scanning setup (workflow file + `.github/codeql/codeql-config.yml`). Not done here; left as a future hygiene task. ## Test plan - [x] `yarn lint` → 0 errors (2 pre-existing react-refresh warnings unchanged) - [x] `yarn tsc --noEmit` → clean - [x] `yarn test --run` → 466/466 pass - [x] `uv run ruff check api/ core/` → clean - [x] `uv run ruff format --check api/ core/` → clean - [ ] CI green on this PR (will watch) - [ ] Post-merge: register FCP/TTFB in Plausible dashboard 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 7, 2026
This was referenced May 14, 2026
This was referenced May 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Installing Claude Code GitHub App
This PR adds a GitHub Actions workflow that enables Claude Code integration in our repository.
What is Claude Code?
Claude Code is an AI coding agent that can help with:
How it works
Once this PR is merged, we'll be able to interact with Claude by mentioning @claude in a pull request or issue comment.
Once the workflow is triggered, Claude will analyze the comment and surrounding context, and execute on the request in a GitHub action.
Important Notes
Security
There's more information in the Claude Code action repo.
After merging this PR, let's try mentioning @claude in a comment on any PR to get started!