Fix allowed-tools to use spec-compliant space-delimited strings#139
Fix allowed-tools to use spec-compliant space-delimited strings#139jonathanhefner wants to merge 4 commits intotrailofbits:mainfrom
allowed-tools to use spec-compliant space-delimited strings#139Conversation
Automated Review — PR #139Warning: Complex PR — flagged for human review (touches CLAUDE.md) Spec VerificationConfirmed against agentskills.io/specification: the Review FindingsAll 23 SKILL.md files and CLAUDE.md are correctly converted. Changes are mechanical and consistent — each YAML list is flattened to a single space-delimited string on the same line as Minor issues / observations:
Validation
RecommendationApprove with optional follow-up for items 1-3 above. The core change is correct and well-scoped. Changes MadeNone — review-only for complex PRs. Reviewed by Claude Code |
Per the agentskills.io specification, `allowed-tools` must be a single string of space-delimited patterns, not a YAML list. Converted all 23 SKILL.md files from the `- Item` list format to the correct `"Item1 Item2"` string format. Also updated the frontmatter examples in CLAUDE.md and the workflow-skill-design skill template to match. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…ow-skill-design docs - Convert firebase-apk-scanner from comma-separated to space-delimited - Update anti-patterns.md and tool-assignment-guide.md examples from YAML lists to space-delimited strings - Remove unnecessary quotes from SKILL.md template placeholder Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Extends the previous spec-compliance fixes: * Convert command frontmatter (commands/*.md) — per Claude Code docs, command files use the same frontmatter as skills, so the same space-delimited rule applies. * Convert three SKILL.md files added since the original PR: mutation-testing, trailmark-structural, trailmark-summary. * Fix the placeholder in the workflow-skill-design template. The previous "[minimum tools needed, space-delimited]" was YAML flow-sequence syntax, which parses as a list — the opposite of what the placeholder claims. Replaced with a concrete-looking space-delimited example plus a comment. Zeroize-audit agent files still use `allowed-tools:` in YAML list form. They are intentionally excluded: per the project's own docs (workflow-skill-design references), agents declare tools with `tools:` (not `allowed-tools:`). Fixing those requires changing the field name as well as the format and is out of scope for this PR. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
1e29f50 to
bcf12e1
Compare
|
From Claude (Joe asked me to analyze this; the text below is mine, not his): Quick factual check on the "spec-compliant" framing. I verified against official docs and source code whether other agent implementations actually read the Summary of who reads
Source-code evidence that Codex and Gemini ignore
Implication: The "non-compliant" framing is technically accurate against the agentskills.io spec but materially overstated. The field is flagged "Experimental" in that spec, and Claude Code — the only shipping runtime that actually parses The change is essentially stylistic: harmless, but not compliance work in any practical sense. Also worth noting: this repo already uses several Claude-Code-only frontmatter fields ( Note from Joe (separately): I'll check that this PR only makes the stated formatting changes and that the skills I have locally don't break if the |
Subagents declare their tool allowlist via `tools:` (comma-separated), not `allowed-tools:` — see Claude Code's subagent docs and this repo's own designing-workflow-skills/SKILL.md:47: > Skills use `allowed-tools:` in frontmatter. Agents use `tools:` > in frontmatter. Before this change, the zeroize-audit agents declared their tool list under `allowed-tools:`, which Claude Code does not read for subagents. The field was effectively a no-op; the spawned agents had no tool restriction enforced. Renames the field on all 11 agents to `tools:` and reformats the YAML list as comma-separated to match the documented format and existing agents elsewhere in the repo (e.g. function-analyzer.md, spec-compliance-checker.md). Tool sets are unchanged. Behavior change: tools now actually constrain what each spawned agent can call. The lists are the ones the original author intended. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
That does not mean they will continue to ignore it in the future. Furthermore, those aren't the only agent clients. The Agent Skills spec provides a baseline that agent clients can support. Yes, clients may support more than that baseline, but skills should target the baseline unless they have a good reason not to. I do not see a good reason to use a non-standard format for the |
|
yes, sorry if it was unclear -- I was checking whether this was an attempt to get buy-in for a standard being developed or if it was a flaw in the current skill repo that needed to be fixed for broader compatibility. Purely a question of urgency, not whether or not it should be fixed |
Per the agentskills.io specification,
allowed-toolsmust be a single string of space-delimited patterns, not a YAML list. Converted all 23 SKILL.md files from the- Itemlist format to the correct"Item1 Item2"string format. Also updated the frontmatter examples in CLAUDE.md and the workflow-skill-design skill template to match.