From ship
Writes, edits, and manages structured project documentation under docs/ enforcing frontmatter format, category conventions, numbering, status lifecycle, and writing rules. Use for guides, design docs, troubleshooting playbooks, references.
npx claudepluginhub heliohq/ship --plugin shipThis skill uses the workspace's default tool permissions.
All structured docs live under `docs/`. Each subdirectory is a category (e.g., `docs/design/`, `docs/guides/`, `docs/troubleshooting/`). Follow this standard when creating new docs or modifying existing ones.
Guides project documentation structure, file organization, content requirements, and best practices for README, ARCHITECTURE.md, API docs, CHANGELOG, CONTRIBUTING. Use for creating docs, project setup, technical docs.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
All structured docs live under docs/. Each subdirectory is a category (e.g., docs/design/, docs/guides/, docs/troubleshooting/). Follow this standard when creating new docs or modifying existing ones.
Never:
current without verifying claims against codeEvery managed doc MUST start with YAML frontmatter:
---
title: "Human-readable title"
description: "One sentence, under 120 chars — enough for an AI to decide whether to read the doc."
category: "design"
number: "002"
status: current | partially-outdated | superseded | draft | not-implemented
services: [scripts, hooks] # only when specific dirs/components are affected
superseded_by: "034" # only when status is superseded
related: ["design/001", "guides/003"] # category-qualified when cross-category
last_modified: "2026-04-13"
---
# heading below the frontmatter. Use quotes if it contains special chars."design", "guides", "troubleshooting"). Must be one of the subdirectories under docs/."002", "029"). Used for file naming (029-topic.md) and cross-referencing.YYYY-MM-DD) when the doc was last updated. Must be updated on every edit.superseded. Points to the replacement doc as category/number.category/number references for navigation.After creating or updating a doc, regenerate the index:
bash "${SHIP_PLUGIN_ROOT:-$(ship-plugin-root 2>/dev/null)}/scripts/generate-docs-index.sh"
This produces docs/DOCS_INDEX.md — a compact table (Category, #, Status, Name, Description, Last Modified, Path) injected at session start so agents know what docs exist without reading each one. Superseded docs are excluded from the index.
draft → current → partially-outdated → superseded
↘ not-implemented (if design was never built)
| Status | Meaning |
|---|---|
draft | Proposed but not yet approved or implemented |
current | Content matches production code |
partially-outdated | Core content still applies but some details have drifted from code |
superseded | Replaced by another doc — must set superseded_by |
not-implemented | Approved but never built |
When changing status, also update last_modified to today's date.
ls docs/<category>/ | sort and pick the next zero-padded 3-digit number (e.g., 003, 010).design/014-credentials-vault/plan-1-vault-service.md) share the parent number.docs/<category>/{number}-{kebab-case-topic}.md
Examples:
docs/design/029-prototype-v3-web-migration.mddocs/guides/003-getting-started.mddocs/troubleshooting/001-auth-failures.md---
(frontmatter)
---
# {Number} — {Title}
## Status
{Status explanation with context — why it has this status, what changed}
## Summary
{2-3 sentences: what problem this solves and the key content}
## (Body sections — flexible per topic and category)
## References
- Related docs, external links, prior art
Each category has its own natural structure. The frontmatter and status lifecycle are universal; the body structure varies by category.
currentdocs/ becomes a categoryguides/003-getting-started"grep -r "old-name" docs/Before marking a doc as current, verify key claims against code:
Update last_modified when you complete verification.
After writing or updating a doc, regenerate the index and output the report card (read skills/shared/report-card.md for the standard format):
## [Write Docs] Report Card
| Field | Value |
|-------|-------|
| Status | <DONE / BLOCKED> |
| Summary | <category/number: doc title — created / updated / superseded> |
### Metrics
| Metric | Value |
|--------|-------|
| Docs created | <N> |
| Docs updated | <N> |
| Index regenerated | yes / no |
### Artifacts
| File | Purpose |
|------|---------|
| docs/<category>/<number>-<topic>.md | The doc |
| docs/DOCS_INDEX.md | Regenerated index |
### Next Steps
1. **Review the doc** — read it and verify claims against code
2. **Design thinking** — /ship:arch-design if the architectural analysis needs more depth
3. **Ship it** — /ship:handoff to create a PR with the doc changes