Conversation
- CAPABILITIES.md: living manifest of tools, MCPs, skills, gates, and known limits - PROBLEMS.md: recurring-problem registry with explicit schema and status vocabulary - propose-tool / report-problem captain skills, backed by bin/fm-registry.sh - AGENTS.md section 14 points to the registries and both skills
- align PROBLEMS.md schema with helper/seed fields (Reported required, Resolved optional) instead of the Reported/Resolved mismatch - make fm-registry.sh ids collision-free (-N suffix) with a non-empty slug fallback - preflight the evaluation queue before mutating the tracked registry so a failed queue write never leaves an unqueued entry
This was referenced Aug 9, 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.
Intent
The developer (acting as captain managing the firstmate orchestration system) directed a crewmate to build a capabilities and problems registry for firstmate-on-itself, working from a written spec at .lavish/firstmate-ios/capabilities-registry-spec.md. The goal was three artifacts: a tracked CAPABILITIES.md living manifest accurately surveying the real environment's tools, MCPs, skills, and quality gates with their limits; a tracked PROBLEMS.md registry using an explicit consistent schema (problem, symptom, impact, suspected root cause, candidate fix/tool, status); and two captain-invocable skills, propose-tool and report-problem, each appending a structured entry to the right registry and queuing an evaluation. They required a minimal AGENTS.md edit (kept in its own section to rebase cleanly against a concurrent watcher fix touching sections 3/5/8) pointing to the manifest and both skills. They explicitly mandated exactly one Codex CLI review pass over the committed diff (checking schema consistency and that skills append valid entries), with real fixes applied and committed but no second pass, before validating through the no-mistakes pipeline.
What Changed
CAPABILITIES.md, a living manifest of tools, MCP servers, skills, and quality gates with their known limits, andPROBLEMS.md, a recurring-problem registry with an explicit schema (problem, symptom, impact, suspected root cause, candidate fix/tool, status).propose-toolandreport-problemskills plus the sharedbin/fm-registry.shhelper they call, which appends a schema-exact entry to the matching registry and queues an evaluation pointer; covered by the new hermetictests/fm-registry.test.shsuite.CONTRIBUTING.md,README.md, anddocs/scripts.md, including a Document-gate sync of the tracked-file lists to include the two new registries.Risk Assessment
✅ Low: Additive change of documentation registries plus one well-guarded append helper whose substantive issues were already fixed in a prior review pass; schemas are consistent and only minor latent fragilities remain.
Testing
Baseline checks (bash -n, --help) passed, then I drove the helper that backs both captain skills end-to-end in a sandboxed FM_ROOT and confirmed propose-tool/report-problem append entries whose fields match the declared registry schemas byte-for-byte and queue a corresponding evaluation line, including all Codex-review hardening paths (collision suffixing, slug fallback, --fix default, input validation, and the queue-preflight guard that prevents an orphaned registry entry). I also reviewed the three docs/skills artifacts and the contained AGENTS.md section 14 for correctness and link resolution. No existing test covered this script, so I added a hermetic
tests/fm-registry.test.sh(matching the repo's tests/lib.sh convention and CI discovery) that locks in the schema-consistency, queue, and safety behaviors; it passes 6/6. This is a CLI/markdown change with no rendered UI surface, so the reviewer-visible evidence is a CLI transcript plus the generated registry/queue markdown rather than a screenshot. All testing wrote to the evidence dir and temp sandboxes only; the change under test is untouched and the sole working-tree addition is the intentional new test file.Evidence: End-to-end CLI transcript: captain runs /propose-tool and /report-problem (commands, confirmations, generated CAPABILITIES.md/PROBLEMS.md entries, and queued evaluations)
Evidence: Generated proposed-tool entry appended to CAPABILITIES.md (schema-exact)
Evidence: Generated problem entry appended to PROBLEMS.md (schema-exact) + queued evaluations
Evidence: New hermetic regression test (added, 6/6 pass)
Source: New hermetic regression test (added, 6/6 pass)
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
bin/fm-registry.sh:101- fm-registry.sh appends new entries to the end of the file (>> "$CAP"/>> "$PROB"), relying on "## Proposed tools" and "## Registry" each being the last section. The CAPABILITIES.md anchor marker ("propose-tool entries are appended below this line") is decorative - the script never seeks to it. If any section is ever added below these, generated entries will silently land in the wrong section. Consider inserting at the anchor marker (or asserting the target section is last) to make the contract robust.bin/fm-registry.sh:142- The help/usage output is produced bysed -n '13,15p' "$0", hard-coding the line range of the usage comment block. Editing the header comment shifts those lines and silently corrupts--helpoutput. A heredoc usage() or matching the# Usage:anchor would be self-maintaining.✅ **Test** - passed
✅ No issues found.
bash -n bin/fm-registry.shandbin/fm-registry.sh --help(parse + usage)End-to-end captain flow in a sandboxed FM_ROOT (copies of real registries):bin/fm-registry.sh propose-tool --tool ... --replaces ... --why ... --notes ...andbin/fm-registry.sh report-problem --problem ... --symptom ... --impact ... --cause ... --fix ...-> verified schema-exact entries appended to CAPABILITIES.md / PROBLEMS.md and pointer lines added to data/evaluation-queue.mdRobustness: id-collision suffixing (same-second dupe ->-2), slug fallback (??? 上海 !!!->entry), omitted--fix->TBD - to be evaluated, missing required flag / unknown subcommand / unknown flag all exit 1 with a messageSafety invariant: forced data/ creation failure (FM_DATA_OVERRIDE under a regular file) -> script exits 1 and the tracked registry is NOT mutated (no orphaned entry)Programmatic label comparison: report-problem/propose-tool emitted**Field:**labels vs the schemas declared in PROBLEMS.md/CAPABILITIES.md headers (exact match; only optional Resolved omitted by design); skill doc relative links resolve to repo-root registriesAdded and rantests/fm-registry.test.sh(hermetic, matches existing tests/lib.sh convention, picked up by CI'stests/*.test.shloop) - 6/6 cases pass🔧 **Document** - 1 issue found → auto-fixed ✅
AGENTS.md:46- AGENTS.md section 1's 'Shared, tracked material means ...' enumeration (line 46) and the section 2 layout tree both omit the two new tracked top-level files CAPABILITIES.md and PROBLEMS.md. Left unchanged because the change deliberately isolated its AGENTS.md edit to a single new section (14) for clean rebasing against a concurrent watcher fix; folding the two files into those enumerations is a judgment call about prioritizing accuracy over that isolation. The parallel list in CONTRIBUTING.md was updated since it carries no such constraint.🔧 Fix: sync tracked-file lists with new registries
✅ Re-checked - no issues remain.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.