Add Doorstop Agent Skill package for AI coding agents#755
Open
aelaguiz wants to merge 2 commits into
Open
Conversation
Adds `skills/doorstop/`, a comprehensive, progressively-disclosed Agent Skill
that teaches any compatible AI coding agent (Claude Code, Cursor, Gemini CLI,
Codex CLI, Antigravity) how to use Doorstop end to end.
Layout:
- SKILL.md — compact entry point (<200-char always-on description)
- references/ — 10 lazy-loaded deep references covering every CLI subcommand,
the Python API, `.doorstop.yml` + item YAML/Markdown schemas, end-to-end
workflows, the full validation severity matrix, publishing, CSV/TSV/XLSX
round-trip, REST server endpoints, custom validator extensions, and a
troubleshooting decision tree
- scripts/doorstop_snapshot.py — dumps the tree, items, links, and issues
as JSON for agent reasoning
- scripts/doorstop_lint.sh — CI-friendly `doorstop -e -Z` gate
- assets/example_reqs/ — tiny two-document example tree (REQ + TST, one link,
one heading) that validates clean
Installable across agents via the OpenSkills universal installer:
npx openskills install doorstop-dev/doorstop # project-local
npx openskills install doorstop-dev/doorstop --global # global
The skill lives inside this repo so it versions with Doorstop itself — when
the CLI surface, file format, or Python API changes, the matching reference
can be updated in the same PR. No Doorstop source files are modified.
6 tasks
The bundled `skills/doorstop/assets/example_reqs/` tree is a live Doorstop
project — a teaching fixture for the skill. When this skill is installed in a
repo that is itself a Doorstop project (including the Doorstop repo itself), a
plain `doorstop` run at the repo root walks into the example tree and tries to
merge it with the host project, failing with:
ERROR: multiple root documents:
- REQ: /.../reqs
- REQ: /.../skills/doorstop/assets/example_reqs/reqs
Fix: drop a `.doorstop.skip-all` marker at `skills/doorstop/assets/`, which
prunes the whole asset subtree from the `os.walk` in
`doorstop/core/builder.py`. The marker sits one level *above* the example
tree, so users who copy the example into a new project (`cp -r
example_reqs/. /new/repo`) leave the marker behind — their copied tree is
discovered normally.
Also document the mechanism in `references/troubleshooting.md` ("multiple
root documents") and note the rationale in `assets/example_reqs/README.md`.
Author
|
Follow-up commit 6ca8dd4 fixes a regression the smoke test surfaced: the bundled Fix: added Verified:
Also documented the |
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
Adds
skills/doorstop/, a comprehensive Agent Skill that teaches any compatible AI coding agent (Claude Code, Cursor, Gemini CLI, Codex CLI, Antigravity) how to drive Doorstop end to end. No Doorstop source, tests, or docs are modified — this is a pure addition under a new top-levelskills/directory.An Agent Skill is a progressively-disclosed knowledge package: a compact always-on
SKILL.mdroutes the agent into deeper references only when the task needs them, so the always-on context stays small.What's in the skill
SKILL.md— entry point with a workflow map, core concepts, and non-negotiables. Always-on description is ~200 chars.references/— 10 lazy-loaded deep references:cli-commands.md— everydoorstopsubcommand and every flagpython-api.md—Tree/Document/Item,build,find_document,find_item, exceptions, hooksfile-formats.md—.doorstop.yml, item YAML, Markdown-frontmatter,references:, extended attrs,!includeworkflows.md— bootstrap, link, review, publish, XLSX round-trip, CI gate, restorevalidation.md— full INFO/WARNING/ERROR matrix, suspect-link mechanics, every-L/-R/-C/-Z/-S/-W/-w/-eflagpublishing.md— format matrix,--template,--index,--no-levels, traceabilityimport-export.md— CSV/TSV/XLSX round-trip, blank-UID convention,-m/--mapserver-api.md— every REST endpoint with JSON shapesextensions.md—extensions.item_validator,tree.validate(document_hook=, item_hook=),item_sha_requiredtroubleshooting.md— decision tree for the common failure modesscripts/doorstop_snapshot.py— dumps tree/items/links/issues as JSON for agent reasoningscripts/doorstop_lint.sh— CI-friendlydoorstop -e -Zwrapperassets/example_reqs/— tiny two-document tree (REQ + TST, one link, one heading) that validates clean and doubles as a copy-paste starter templateInstall
The skill is installable across agents via the OpenSkills universal installer once this PR is merged:
The layout (
skills/<name>/SKILL.mdat repo root) is what OpenSkills expects for multi-skill repos, and it sits cleanly alongside the existingdoorstop/,docs/, andtests/trees.Why it lives in-tree
Doorstop's CLI surface, file format, and Python API evolve together. Keeping the skill inside this repo means the matching reference doc can be updated in the same PR as the behavior change, instead of drifting in an external fork.
Test plan
doorstoponassets/example_reqs/exits 0 afterdoorstop review alldoorstop publish REQ /tmp/out.mdproduces correct Markdowndoorstop export REQ /tmp/out.csvround-tripsscripts/doorstop_snapshot.py --prettyemits valid JSON withvalid: truescripts/doorstop_lint.shwrapsdoorstop -e -Zand exits 0 on the example treeSKILL.mdfrontmatter description ≤ 200 charsScope
skills/doorstop/🤖 Generated with Claude Code