Skip to content

Add Doorstop Agent Skill package for AI coding agents#1

Merged
aelaguiz merged 2 commits into
developfrom
add-doorstop-skill
Apr 17, 2026
Merged

Add Doorstop Agent Skill package for AI coding agents#1
aelaguiz merged 2 commits into
developfrom
add-doorstop-skill

Conversation

@aelaguiz

Copy link
Copy Markdown

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. Pure addition under a new top-level skills/ directory — no existing Doorstop source, tests, or docs are modified.

Mirrors the upstream PR opened against doorstop-dev/doorstop:develop (doorstop-dev#755).

What's in the skill

  • SKILL.md — compact entry point, always-on description ≤ 200 chars
  • references/ — 10 lazy-loaded deep references (cli-commands, python-api, file-formats, workflows, validation, publishing, import-export, server-api, extensions, troubleshooting)
  • scripts/doorstop_snapshot.py — dumps tree/items/links/issues as JSON for agent reasoning
  • scripts/doorstop_lint.sh — CI-friendly doorstop -e -Z wrapper
  • assets/example_reqs/ — tiny two-document tree (REQ + TST, one link, one heading) that validates clean

Install

Once merged (locally, or when upstream merges):

npx openskills install funcountry/doorstop-ai            # project-local, from this fork
npx openskills install funcountry/doorstop-ai --global   # global

Test plan

  • doorstop on assets/example_reqs/ exits 0 after doorstop review all
  • doorstop publish REQ /tmp/out.md produces correct Markdown
  • doorstop export REQ /tmp/out.csv round-trips
  • scripts/doorstop_snapshot.py --pretty emits valid JSON with valid: true
  • scripts/doorstop_lint.sh wraps doorstop -e -Z and exits 0 on the example tree
  • SKILL.md frontmatter description ≤ 200 chars

🤖 Generated with Claude Code

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.
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`.
@aelaguiz

Copy link
Copy Markdown
Author

Follow-up commit 6ca8dd4 fixes a regression: the bundled example_reqs/ tree is a live Doorstop project, so doorstop at the repo root was merging it with Doorstop's own reqs/ and failing with "multiple root documents".

Added skills/doorstop/assets/.doorstop.skip-all to prune the asset subtree during discovery, plus a troubleshooting entry for the "multiple root documents" failure mode.

@aelaguiz aelaguiz merged commit d76cc68 into develop Apr 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant