Repository navigation
docs(agents): rules and skills from the 2026-10-31 session retro - #12493
Merged
Merged
Conversation
Applies the owner-approved findings of the retro of session 402df83f (2026-10-28 to 2026-10-31): - watch-deploys.sh ends with "no deploy for <sha>" after 6 empty polls, passes --project=anyplot, and exits 2 when gcloud fails; watch-checks.sh waits 90 polls and names the pending checks. - open-pr: hadolint gate for Dockerfiles, tests for new code before the PR opens (codecov triage folded in), the real check names, Copilot latency of about 5 minutes, the GraphQL requestReviews mechanic, the nvm prefix for site-smoke, a pull of the shared checkout after a merge, and a report of worktrees whose branch is gone. - zweitmeinung: attach a diff over about 60 KB, how --attach resolves paths, measured Gemini costs, cleanup of root-owned files. - CLAUDE.md: delegate stall check and post-compaction re-check, a classifier denial is final for every agent, first Copilot review at about 5 minutes, merges only on a named OK (mirrored in copilot-instructions.md). - guardrails.md: one builder per scope and one message per round, the denial incident, the Console-wizard pattern, the stalled-delegate incident and recipe. - Recipes: single-library impl-generate dispatch, eval-matrix forms, the second-generation trigger import route. - uv run --extra dev ruff wherever a skill, command or doc runs ruff. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7HSkGyea1k2v293XiAMo8
Fixes from the Gemini Flash pre-PR check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7HSkGyea1k2v293XiAMo8
) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7HSkGyea1k2v293XiAMo8
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The Codecov guidance incorrectly treats every red patch check as requiring a test, conflicting with the documented exception for live DB/HTTP flows handled by /verify-api.
1 open issue
What changed in this PR
This pull request documents lessons from the 2026-10-31 session retro across agent guidance, workflow procedures, verification skills, and PR watcher scripts.
Changes:
- Documents implementation dispatches, evaluation commands, Cloud Build trigger updates, and Ruff requirements.
- Adds guidance for delegate stalls, worktree reporting, Copilot reviews, Dockerfile linting, Gemini reviews, and verification.
- Adds bounded deployment and check watchers with clearer failure and timeout reporting.
| File | Description |
|---|---|
docs/workflows/overview.md |
Documents single-library implementation dispatches and inputs. |
docs/development.md |
Updates Ruff commands to include the dev extra. |
CLAUDE.md |
Adds delegate, review, denial, and merge-authorization guidance. |
changelog.d/session-retro-rules.md |
Records the session-retro workflow and documentation changes. |
agents/README.md |
Documents evaluation commands and corrects the thinking-budget limit. |
agentic/docs/project-guide.md |
Updates Ruff guidance and documents Cloud Build trigger procedures. |
agentic/commands/update.md |
Updates implementation lint commands. |
agentic/commands/test.md |
Updates documented test and formatting commands. |
agentic/commands/regen.md |
Updates regeneration lint commands. |
agentic/commands/refactor.md |
Updates refactoring lint guidance. |
agentic/commands/pull_request.md |
Clarifies PR attribution and commit-trailer handling. |
agentic/commands/audit/backend-auditor.md |
Updates the backend audit Ruff command. |
agentic/commands/audit.md |
Updates audit baseline and autofix commands. |
agentic/commands/agentic.md |
Updates audit-agent Ruff commands. |
.github/copilot-instructions.md |
Mirrors merge guidance and Ruff command updates. |
.claude/skills/zweitmeinung/SKILL.md |
Adds large-diff attachment, cleanup, and cost guidance. |
.claude/skills/verify-core/SKILL.md |
Updates Ruff guidance and documents the Python-version gotcha. |
.claude/skills/verify-api/SKILL.md |
Updates API verification Ruff commands. |
.claude/skills/open-pr/SKILL.md |
Expands PR gates, review mechanics, watcher guidance, and worktree procedures. |
.claude/skills/open-pr/scripts/watch-deploys.sh |
Adds project scoping, bounded polling, and failure handling. |
.claude/skills/open-pr/scripts/watch-checks.sh |
Extends the timeout and reports pending check names. |
.claude/skills/gemini-task/SKILL.md |
Updates Gemini verification commands. |
.claude/guardrails.md |
Records delegation, permission-denial, Console setup, and stall-handling guidance. |
This pull request is ready to be approved.
Review effort: Lite
Copilot review on #12493. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7HSkGyea1k2v293XiAMo8
3 of 4 tasks
MarkusNeusinger
added a commit
that referenced
this pull request
Nov 1, 2026
## Summary - Main is red since #12493: it added the `.claude/guardrails.md` section "Long-running work reports progress proactively" without registering it in `tests/unit/test_agent_instructions.py`, so `test_every_companion_section_is_registered` fails (seen on #12490's CI run). - #12493's CI never ran that test: "Run Tests" only starts for Python, config, workflow and prompt changes, and the PR changed only instruction files. `ci-tests.yml` now also runs the tests for `CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`, `.claude/guardrails.md`, `.claude/skills/` and `agentic/commands/`, which `tests/unit/test_agent_instructions.py` and `tests/unit/skills` read. - Registers the new section with three CLAUDE.md anchors (never let the user ask, the 30-minute stall rule, the post-compaction re-check) and the classifier-denial rule under the external-writes section. ## Plan N/A (follow-up to #12493) ## Test plan - [x] `uv run --extra dev --extra test pytest tests/unit/test_agent_instructions.py tests/unit/skills tests/unit/workflows -n auto`: 1,319 passed - [x] The new filter matches `CLAUDE.md`, `.claude/guardrails.md`, a skill and a command, and not `docs/index.md` or `app/` (dry run of the grep) - [x] `tools.changelog check --base origin/main` passes - [ ] CI: this PR changes a workflow and a test, so "Run Tests" runs and must be green https://claude.ai/code/session_01H7HSkGyea1k2v293XiAMo8 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

Summary
watch-deploys.shexits 0 withno deploy for <sha>after 6 empty polls (157 s measured on 523199b, which triggered no deploy), now passes--project=anyplot(the project guide's rule; a wrong default project would otherwise read as "no deploy"), and exits 2 at once whengcloud builds listfails.watch-checks.shwaits 90 polls (about 45 minutes) and itsTIMEOUTline names the checks still pending. Both caps are stated inopen-prsections 3a and 4.CLAUDE.mdgets the delegate stall check with a post-compaction re-check, a classifier denial that is final for every agent of the session, the first Copilot review at about 5 minutes, and merges only on a named OK (mirrored incopilot-instructions.md);open-prgets a hadolint row (CI's 2.15.1, thresholdwarning), tests for new code before the PR opens (the codecov triage folded into section 1), the 16 real check names, the GraphQLrequestReviewsmechanic, the nvm prefix for site-smoke, apull --ff-onlyof the shared checkout and a once-per-session worktree report;zweitmeinunggets the 60 KB diff rule, the--attachpath gotcha, ledger-measured costs and the root-owned-files cleanup;verify-corethe system-python3gotcha;guardrails.mdthe delegation, denial, Console-wizard and stalled-delegate sections.impl-generate.ymldispatch with its optional inputs (docs/workflows/overview.md), the eval-matrix forms real runs used (agents/README.md), and the describe, edit, import route for a second-generation Cloud Build trigger (agentic/docs/project-guide.md). Every gate command that runs ruff now names thedevextra.Decisions taken within the brief:
infra/holds only Cloudflare.warningorerrorline":agents/Dockerfileandtoolchain.Dockerfileprintinfolines (DL3059, DL3066) on main today, below CI's threshold.--extra devwent into every skill, command and doc that runs ruff (alsodocs/development.md,project-guide.md,copilot-instructions.md, the audit and test commands); historical plans underagentic/specs/andagentic/audits/and the CI workflow (which syncs--extra dev) stay as they are.copilot-instructions.md: the classifier is a Claude Code harness mechanism, and that file carries no external-writes rule to extend.guardrails.mdwere updated with the same ledger figures, so the skill and the guardrails agree.agents/README.mdsaid--thinking-budgettakes 0 to 4,096;matrix.pycaps it at 8,192 (MAX_THINKING_BUDGET). Fixed while there.Plan
N/A. The source is the retro of session 402df83f (2026-10-28 to 2026-10-31), sections 3, 4 and 6: ranked findings, proposed changes, and the first-try accuracy table of documented commands.
Test plan
watch-deploys.sh 523199b36(a.github/workflows/merge):no deploy for 523199b, exit 0 after 157 s;f356a57b1the same;e9b11e373(two deploys):ALL DEPLOYS FINISHED for e9b11e3, 0 not SUCCESS, exit 0 after 32 swatch-checks.sh 12487: exits at once,ALL 16 CHECKS FINISHED on 3a6d00a04, 0 not green; the TIMEOUT name parsing checked on sample linespull --ff-onlyguard run read-only against the shared checkout; thegit diffexclude pathspec and the hadolint command run locally (all five Dockerfiles exit 0)RequestReviewsInputlistsbotIds(GraphQL introspection); the Copilot bot idBOT_kgDOCnlnWAread from feat(ci): Claude credential switch (subscription/oidc/api) + per-implementation daily regen #12487's reviewuv run --extra dev ruff check . && uv run --extra dev ruff format --check .;uv run python -m tools.changelog check --base origin/mainbotIdsand the hadolint entrypoint were false positives (verified), the rest pre-existing or no false resulthttps://claude.ai/code/session_01H7HSkGyea1k2v293XiAMo8