feat: expand internal skills across agent harnesses - #7
Merged
Conversation
…-discipline Wire .grok/skills and .codex/skills as symlinks to the canonical .agents/skills tree (matching .claude/skills), record verified harness discovery evidence, and add an agent-only skill for tracker-backed ticket judgment.
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.
Intent
Make firstmate's internal skills discoverable on grok and codex, not just claude, and add one new agent-only skill for ticket-queue discipline. This is firstmate's own shared tracked material.
VERIFY first (do not skip): confirm with evidence what grok, codex, and claude actually resolve for project-level skills - which paths each harness reads, that a symlink is not assumed to work without observation, and that git preserves mode-120000 symlinks. Record findings in the PR body / maintainer verification doc. Key observed fact: a grok 0.2.118 session in this worktree loaded firstmate-coding-guidelines from the project path (.../.grok/skills/... which is a symlink to .agents/skills), NOT from ~/.grok/skills (skill absent from user home); confirmed via grok inspect --json source.type=project. Codex codex-cli 0.146.0-alpha.9.2 via codex debug prompt-input listed skill root r0=.../firstmate/.agents/skills and Available skills including firstmate-coding-guidelines and ticket-queue-discipline. Claude discovery remains via .claude/skills symlink. All three harness skill paths committed as git mode 120000.
Wire discovery so .agents/skills remains the single canonical source (no duplicated skill content). Match the claude pattern for .codex/skills and .grok/skills symlinks to ../.agents/skills. Document verified evidence.
Add ONE agent-only internal skill ticket-queue-discipline under .agents/skills with metadata.internal: true and user-invocable: false. Trigger: before claiming, dispatching, closing, or auditing tracker-backed ticket work. Content is JUDGMENT ONLY: one authoritative live tracker; claim atomically at dispatch; verify acceptance criteria against code and merge history at pickup; close with satisfied-by naming the merged PR; decision classes with one-line reasons; convergence; every decision becomes an executable test; evidence honesty.
Acceptance: verified evidence of what each harness resolves in PR body; single canonical .agents/skills; new skill loads on all three harnesses; existing claude discovery unbroken and proven by CI symlink invariants. Stay inside skill discovery plus the one new skill.
PR must open against captain fork (sparkus/firstmate), base origin/main - not upstream kunchenguid.
What Changed
.agents/skillstree, with CI invariants matching Claude so all three harnesses share one tracked source.ticket-queue-disciplineskill for live-tracker claims, acceptance and merge verification, decision escalation, convergence, executable tests, and honest close-out evidence.120000preservation.Risk Assessment
✅ Low: Captain, the prior finding is resolved with honest Claude runtime evidence, the explicitly authorized post-merge confirmation remains clearly bounded, and the source wiring is canonical and well-contained.
Testing
Baseline scope checks, live three-harness discovery, project-versus-user provenance, symlink and canonical-source verification, and the focused documentation contract passed; initial budget-capped Claude probes were retried successfully without the artificial cap, reviewer-visible evidence was captured, and the raw debug log was replaced by a sanitized excerpt.
Evidence: Live Claude/Codex/Grok discovery transcript
Evidence: Mode-120000 and canonical-source transcript
Evidence: Grok project provenance transcript
Evidence: Sanitized Claude project-root and SkillTool excerpt
Evidence: Focused documentation contract test
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed ✅
docs/verification/harness-skill-discovery.md:71- Intent requires “confirm with evidence what ... claude actually resolve[s],” says a symlink must not be assumed to work without observation, and requires the new skill to load on all three harnesses. This Claude section only runsreadlink, checks the pre-existingafkfile, and inspects Git mode; it never observes Claude resolving or loadingticket-queue-discipline. Record Claude runtime discovery evidence for the new project skill, or obtain explicit approval to treat filesystem/CI invariants as the proxy.🔧 Fix: Record Claude runtime skill resolution evidence
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
git status --short --branch;git rev-parse HEAD;git diff --name-status 4e01d7fc449d4ffff932f172721f1fea53dfa6e6..5939a39fbf2e52a6fe8e22a56d42cfdc2c8a65b0grok inspect --jsonfiltered toticket-queue-discipline, with user-home absence checkscodex debug prompt-input "x"filtered to project rootr0andticket-queue-disciplineclaude -p --output-format stream-json --verbose --no-session-persistence --permission-mode dontAsk --tools Skill ...git ls-files -s .claude/skills .codex/skills .grok/skillswithreadlink, readability, canonical-bodycmp, and tracked-source checksbin/fm-test-run.sh tests/fm-documentation-audiences.test.shafter the documentation correction✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.