Repository navigation
docs(wish): skills-everywhere-c — skill-content lint + contract/docs rewrite - #2888
Merged
Merged
Conversation
…ost-plugin world Wish skills-everywhere-c, Group 2. Reduce the three contract files to the three surfaces Wish B leaves behind — the signed binary, the skills.sh channel, and the Orca plugin — and make the drift guard enforce it. CLAUDE.md: drop the seven plugin-era gotchas (H3/H4/H6, hook dispatch, the AskUserQuestion carve-out, Codex delivery/activation owners, the .curated lane, SessionStart parity, the stamp root); rewrite the post-delivery convergence gotcha to keep the argv protocol and drop the second activation hop; point the Codex-OTel gotcha at migrateDeadGenieOtel; add four new gotchas (the skills channel, --all consent widening, consent none, the legacy-integration retirement). Remove the src/hooks rows from the architecture tree, drop the setup --codex clause, and rewrite the GENIE_AGENT_NAME / GENIE_AGENT_ID descriptions off the deleted hook subsystem. The skills-channel gotcha is transcribed from merged code, not from the plan: argv from buildSkillsAddArgv, record fields from skillsInstallRecordSchema (including dirDigests, which the plan omitted), and the doctor comparison from checkSkillsChannel — doctor iterates KNOWN_AGENT_SKILL_HOMES and compares the record's inventory and ref; agentDirs is uninstall's removal authority, not doctor's. AGENTS.md: rewrite the release contract (no both marketplaces), the Codex runtime note (no .codex-plugin, no hook review), and the skills bullet; record the git-state freeze as operator policy enforced only by server-side branch protection. README.md: replace the delivery/activation and hook-trust paragraphs with the three-surface story, delete the five plugin-era Codex sections, and rewrite the quickstart selectors, command table rows and the Omni remote-approval bullet. Drift test: RETIRED_FOSSILS gains the nine RETIRED-9 tokens plus native-surfaces.md, .codex-plugin and 'both marketplaces'; the list is now asserted against both files, 'hook' leaves REQUIRED_V5_COMMANDS, and both files must name the public skills command and the install record.
…post-plugin contract Two Group E assertions were drift guards for exactly the README passages this group was mandated to delete, so they went red on the rewrite: - "operator docs distinguish product, role-agent, personal, MCP, and hook inventories" required the five plugin-era inventory rows, the H3/H4/H6 hook table and the fallback-quarantine section. Retargeted to the three delivery surfaces the rewritten README does describe (the public skills command, the install record, the shared agent skills home, MCP retirement, the consent-none line), with the plugin-era strings kept as negative assertions so they cannot come back. - "lifecycle and operator docs name design, plan, and implementation review as distinct mandatory gates" additionally required three Codex-setup sentences. The three review-gate terms — the test's actual subject — still assert against both files; the setup sentences are dropped with the command they described.
…he architecture tree The spot-check that every retained section names something that still exists found src/lib/transcript.ts, src/lib/codex-logs.ts and src/lib/claude-logs.ts in the architecture tree; all three left with the v4 runtime deletion. Replaced with modules that do exist, and rewrote the src/lib/ summary line to match them.
…ll dirs Two new rule families in the existing gate, no parallel script and no new `check` entry. Token rule: BANNED-13 matched as PLAIN SUBSTRINGS (String.includes; no regex, no word boundaries, no allowlist) on EVERY file the walk finds under the scanned skills dir, .md and non-.md alike, so agents/openai.yaml starter prompts are in scope. Each violation reports <path>:<line>, the offending token, and the portable replacement. The scan runs BEFORE the `skills-lint:ignore` bailout; the bailout now skips only the command/resource checks it was introduced for. Structure rules by IMPORT, not re-implementation: scanRepoSkills already computes both findings and is already CI-gated, so skills-lint surfaces them as `empty skill dir` / `nested skill dir` errors instead of silently continuing. scanRepoSkills gains an explicit skillsRoot override so the SKILLS_LINT_DIR fixture root reuses that one walk. Fixtures: one negative per BANNED-13 token, one non-.md fixture, one ignore-marker fixture, nested and empty-dir fixtures, and a positive prose fixture - each asserting the exit code and the message text. Also refreshes the parity script's stale header docstring (the published inventory is the LOCAL checkout; skills@1.5.23 binds the third capture to skillFilter, so an @<ref> suffix is ignored and the default branch is served) and adds the newly imported helper to build-tarballs.yml's PR path filter, which release-docs.test.ts derives transitively.
Applies the BANNED-13 -> portable-role mapping to the five skill files that carried the retired tokens, taking `skills/` from 13 hits to 0: - work/SKILL.md: the role table becomes implementor-low / implementor-mid / implementor-high / reviewer / fixer / final-gate / scout as bare names, the dispatch paragraph no longer promises a runtime custom-agent profile, and the git-state freeze is stated as operator policy - verbatim, in both the shared-workspace paragraph and the freeze block quoted into briefs. The block is additive and stays verbatim-quotable. - wish/templates/wish-template.md: the routing rubric names the portable roles; the structural contract parseWishTemplateContract reads is unchanged (wishes:lint green over all 85 wishes). - README.md: invocation is skills.sh discovery, not plugin selectors; the reason a starter card stays selector-free survives as a reason. The distribution contract drops the deleted plugin mirror and its generator, the inventory table gains the three genie-orca lanes, and the count is 25. - trace/SKILL.md and genie-hacks/references/catalog.md: bare `scout` and `implementor-low`; the catalog's identity comment no longer credits a deleted hook-dispatch subsystem. skills-installer.ts: bumping SKILLS_CLI_VERSION now explicitly requires re-auditing KNOWN_AGENT_SKILL_HOMES and the post-install discovery scan, and the timeout rationale drops its stale "22 skills" literal. release-docs.test.ts moves with the README rewrite it guards.
automagik-dev/docs has no .github/workflows, so the 'Mintlify docs-lint run on that PR is green' criterion was unsatisfiable as written; it now names the four checks that repository actually runs and points at Group 4 for the genie-side docs-lint gate. The validation block no longer opens with 'git submodule update --init .docs-vendor', which resets the submodule to the still-unbumped superproject pointer and turns the hooks.mdx and RETIRED-9 assertions into false negatives while making merge-base --is-ancestor a false pass.
… drop genie selectors
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
lint:docs-markdown and lint:docs-links now cover docs/installation.mdx and the new docs/release-notes.mdx alongside SECURITY.md and the canisterworm runbook, so the two pages this wish rewrites are gated like the rest. Mintlify pages link to site-absolute routes (/genie/<page>), which the existing ^/ replacement resolved to a path that does not exist on disk. A new replacement pattern maps /genie/<page>[#anchor] to the real file under docs/, so the cross-page anchor from release-notes into the installation page is verified rather than skipped.
A third job greps docs/ for RETIRED-9 plus the docs-only 'plugin marketplace add' bootstrap step and fails with the matches printed. The pattern is byte-identical to the wish's Group 3 validation grep (137 bytes, sha256 12fe1d4a37f66d04...): one list, two call sites. It lives in CI and deliberately not in 'bun run check': docs/ is a symlink into the .docs-vendor submodule, so a contributor with an unpopulated submodule would see a false failure, while every job here checks out with submodules: recursive. Decision 11's blind spot -- a violation landed on docs main after the last pointer bump stays invisible until the next bump -- is recorded in the workflow header. package.json joins the path triggers because it now carries the lint:docs-markdown / lint:docs-links target lists.
…able grep exits 2, not 1, when docs/ does not resolve — an unpopulated .docs-vendor, or the docs repo moving the genie/ subdir the symlink points at. Read as a plain `if` condition that status was indistinguishable from a clean scan, so the job printed its success line and exited 0 having read nothing. Assert docs/ is populated before grepping, and treat any grep status other than 0 (matched) or 1 (clean) as a failure. The 137-byte RETIRED-9 + 'plugin marketplace add' pattern is untouched and still byte-identical to the wish's Group 3 validation grep (sha256 12fe1d4a37f66d046bf661d127630841021f1b8761caff9d16709df820a9bc61).
markdownlint-cli2 treats every argument as a glob, so a target that does not exist is silently skipped and the run reports green over fewer files than it was asked for: 'markdownlint-cli2 SECURITY.md docs/release-notes-DOES-NOT-EXIST.mdx' prints 'Linting: 1 file' and exits 0. With docs/ backed by the .docs-vendor submodule that turns an unpopulated (or not-yet-bumped) pointer into an uncovered pass. Gate the run on the three docs/ targets resolving first, so a missing page fails the script instead of shrinking its scope. lint:docs-links already failed correctly (markdown-link-check throws ENOENT).
The new replacement maps /genie/<route> to docs/<route>.mdx, which holds for every /genie/ link in the two newly-linted pages but not for a route served by a directory index (/genie/config) or written with a trailing slash (/genie/installation/) — either would resolve to a path that does not exist and be reported dead. Latent, not current; note the assumption in the config so the next reader extends the pattern instead of deleting a good link.
namastex888
marked this pull request as ready for review
September 1, 2026 04:29
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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.
Executes the approved wish
.genie/wishes/skills-everywhere-c/WISH.md(plan SHIP round 2): skills-lint BANNED-13 token + structure rules, the five skill-content corrections, the CLAUDE.md/AGENTS.md/README.md rewrite to the post-Wish-B world, the public docs rewrite + release-notes page (separate PR in automagik-dev/docs), and docs-lint coverage.Waves land onto this branch via per-group PRs with review evidence (reviewer != engineer, <=2 fix loops). G3's docs-repo PR merge is human-gated; the .docs-vendor pointer bump follows it.
Draft until all groups + validation are green.
🤖 Generated with Claude Code
https://claude.ai/code/session_01GKqeXSyZMD8YmQtk4vtXFZ