project-docs-bootstrap
Initial creation or template refresh of repo-local .issueops operating documents and the AGENTS.md routing block from repository evidence, through the deterministic issueops project bootstrap pass fol
SKILL.mdskills/project-docs-bootstrap/SKILL.md
GitHubProject Docs Bootstrap
Goal
Create or refresh the repo-local .issueops document family and the
AGENTS.md routing block from repository evidence. Two passes run in order:
the deterministic static pass (CLI engine), then the agent enrichment pass
(PROMPT.md in this skill). This skill is the docs dimension of the
project-bootstrap orchestration and is also usable standalone.
Use and Boundaries
issueops is an open-source library applied to many different projects. Defaults and templates are starting points, never mandates: a target repo's own conventions, doc language, and curated content are always authoritative.
Use for first-time creation of .issueops docs, or an explicit template
refresh of existing generated docs. Route instead:
- incremental refresh while work is happening →
project-docs-update; - oversized or badly structured docs →
project-docs-optimize; - a repo whose
.issueopsfamily roots are not modular yet (nodocumentation/manifest.json) →project-docs-bootstrapcreates the modular layout; there is no flat-layout path.
If .issueops documents already exist and the user did not ask for a
refresh, do not run the write pass; route to project-docs-update.
Inputs
- repository root (defaults to the current directory);
--dry-runfor a plan without writing;--syncto replace existing generated docs from current templates and evidence — only on explicit request.
Safety Rules
- Never overwrite an existing
AGENTS.mdwholesale. The engine may prepend the behavioral block when missing and manages only theISSUEOPSmarker block after that. - Run the dry-run plan first when any doubt exists about what will change.
- Without
--sync, existing generated docs are preserved; report thesync_availablewarning instead of forcing a refresh. - Treat static output as an evidence-backed draft. If the project already has stronger local docs, preserve and reference them.
- The enrichment pass must not invent facts: anything not confirmed by
source files, command output, or explicit user instruction is marked
Unknown / not confirmedwith a way to verify. - Respect the repo's established conventions and language. Existing
AGENTS.mdbehavioral guidance, doc style, and terminology win over harness defaults unless the user explicitly overrides them; enrich in the dominant language of the existing docs. Never stack generic template text over repo-authored rules.
Static vs Agent-Filled Boundary
The static pass fills only: document skeletons, detected
languages/package managers, candidate test/build/lint commands, routing,
generic safety/testing/API guidance, AGENTS.md managed blocks, and repo
profile metadata.
The agent enrichment pass fills from codebase evidence: actual architecture
(entrypoints, boundaries, data flow, auth/error surfaces), actual operations
(setup, env, build/test/lint/deploy, CI), actual conventions and testing
guidance, and concrete cautions/ADRs. Standard engineering topics (DDD, clean
code, layered/hexagonal architecture, SOLID, OOP, testing, Swagger, exception
handling, ...) are evaluated against that evidence using
references/engineering-standards.md; only confirmed topics reach the docs.
See PROMPT.md for the full fill targets per document.
Workflow
Plan without writing:
issueops project bootstrap --repo . --dry-run --jsonMCP alternative:
project_docs_bootstrap_plan.Inspect the plan JSON:
signals.files,signals.languages,signals.test_commands,signals.profile, each plannedfiles[].action, andfiles[].preserved(true means the existing file will be kept as-is; onlyAGENTS.md's managed marker block refreshes in place). Heedwarningssuch asfamily_docs_preserved, andsync_available— they reroute work toproject-docs-optimizeor--syncinstead of forcing writes.Write files and repo profile metadata when the plan is acceptable:
issueops project bootstrap --repo . --jsonAdd
--synconly for an explicitly requested refresh of existing generated docs.Run the agent enrichment pass using
PROMPT.mdin this skill directory. It reads repository evidence and updates.issueopsdocs through the MCP contract (project_docs_route→project_docs_read→project_docs_revise/project_docs_append) rather than blindly accepting static template text. It also evaluates the engineering standards catalog atreferences/engineering-standards.mdin this skill directory (layered/hexagonal/onion/clean architecture, DDD, SOLID, OOP, clean code, error/exception handling, OpenAPI/Swagger, testing best practices, and adjacent topics) and maps every evidence-confirmed topic to its single owning document per the catalog's topic-to-doc map.Verify:
AGENTS.mdcontains the behavioral top block and only the managed marker block was added or updated;every expected root index, module starter, single-owner root, and
documentation/manifest.jsonexists;each family root links into its module directory and each module starter back-links its root;
the MCP maintenance path works:
project_docs_route,project_docs_read,project_docs_revise,project_docs_append;the project-docs-optimize checker reports zero violations on the fresh layout when its script is available:
uv run --directory <issueops>/skills/project-docs-optimize \ python -m scripts.check --root "$PWD" --mode check --jsonthe smallest relevant repo validation command still passes when docs make claims about workflow or commands.
Generated Documents
AGENTS.md (behavioral block + managed marker block) and the
.issueops family: ARCHITECTURE, CAUTIONS, COMMIT_POLICY,
CONSTITUTION, CONVENTIONS, TECH_STACK, TESTING, OPEN_API_SPEC, ADR,
OPERATIONS, AGENT_WORKFLOW. In client repositories (detected frontend
or desktop-client project type) bootstrap also creates
.issueops/DESIGN.md, a design-system contract that points at a
curated root DESIGN.md when the repo already maintains one.
Completion Evidence
Report: plan summary, files created vs preserved vs synced, enrichment updates with their evidence, verification command results, and remaining unknowns explicitly marked.