Code Design Rationale Investigator
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
A skill your agent uses when code is ready to ship — creates PRs, merges, deploys, and verifies.
$ npx skills add garagon/nanostack --skill ship -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garagon/nanostack ship --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/garagon/nanostack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ship .claude/skills/ship && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ship" agent skill from https://github.com/garagon/nanostack/tree/main/ship into .claude/skills/ship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/garagon/nanostack/tree/main/shipType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add garagon/nanostack --skill ship -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garagon/nanostack ship --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garagon/nanostack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/ship .agents/skills/ship && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ship" agent skill from https://github.com/garagon/nanostack/tree/main/ship into .agents/skills/ship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garagon/nanostack --skill ship -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garagon/nanostack ship --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garagon/nanostack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/ship .cursor/skills/ship && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ship" agent skill from https://github.com/garagon/nanostack/tree/main/ship into .cursor/skills/ship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/garagon/nanostack.git --path ship--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add garagon/nanostack --skill ship -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garagon/nanostack ship --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garagon/nanostack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/ship .gemini/skills/ship && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ship" agent skill from https://github.com/garagon/nanostack/tree/main/ship into .gemini/skills/ship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install garagon/nanostack shipInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add garagon/nanostack --skill ship -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garagon/nanostack.git skills-src && mkdir -p .github/skills && cp -r skills-src/ship .github/skills/ship && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ship" agent skill from https://github.com/garagon/nanostack/tree/main/ship into .github/skills/ship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garagon/nanostack --skill ship -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garagon/nanostack ship --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garagon/nanostack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/ship .opencode/skills/ship && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ship" agent skill from https://github.com/garagon/nanostack/tree/main/ship into .opencode/skills/ship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
shipA skill your agent uses when code is ready to ship — creates PRs, merges, deploys, and verifies.
Ship is an agent skill from garagon/nanostack. Use when code is ready to ship — creates PRs, merges, deploys, and verifies. Handles the full PR-to-production pipeline. Triggers on /ship.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including reference files (for example `agents/openai.yaml`, `bin/pre-ship-check.sh` and `bin/quality-check.sh`).
It sits in Development. It works with Git. The repository describes itself as: A workflow harness that helps AI coding agents plan, review, test, and ship safer code. The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0372aed. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitghjqnodeflyvercelwranglernpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh, vercel, wrangler and npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ship loads about 4.2k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 36 tokens; SKILL.md has 1,733 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from garagon/nanostack at commit 0372aed, republished under its Apache-2.0 licence (© garagon). 1,733 words, ~4,170 tokens.
.claude/skills/ship/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.You get code from "done" to "verified in production" in one pass. You own the full pipeline: pre-flight, PR, CI, deploy, verification. If something breaks after merge, you rollback first and debug second.
Defensive telemetry init. No-op if telemetry is disabled via NANOSTACK_NO_TELEMETRY=1, ~/.nanostack/.telemetry-disabled, or if the helpers are removed.
_P="$HOME/.claude/skills/nanostack/bin/lib/skill-preamble.sh"
[ -f "$_P" ] && . "$_P" ship
unset _PRead profile, run_mode, autopilot, and plan_approval per reference/session-state-contract.md BEFORE doing any pre-flight or pipeline work. This is required for /ship because every subsequent step in this skill mutates state (commit, push, PR, deploy, rollback) and the contract forbids that when run_mode == report_only.
SESSION=$NANOSTACK_STORE/session.json
[ -f "$SESSION" ] || SESSION="$HOME/.nanostack/session.json"
PROFILE=$(jq -r '.profile // (if (.capabilities // null) == null then "guided" else "professional" end)' "$SESSION" 2>/dev/null || echo "professional")
RUN_MODE=$(jq -r '.run_mode // "normal"' "$SESSION" 2>/dev/null || echo "normal")
AUTOPILOT=$(jq -r '.autopilot // false' "$SESSION" 2>/dev/null || echo "false")
PLAN_APPROVAL=$(jq -r '.plan_approval // (if .autopilot then "auto" else "manual" end)' "$SESSION" 2>/dev/null || echo "manual")When RUN_MODE == "report_only", /ship enters Shipping report mode and MUST NOT mutate anything. The session-state contract is explicit: report-only sprints exist so the user can see what /ship would do without committing the agent to action.
Allowed in report-only:
quality-check.sh.Forbidden in report-only:
git commit, git push, git tag, any other mutating git command.gh pr create, gh pr merge, any other GitHub mutation.fly deploy, vercel deploy, wrangler deploy, etc.).bin/init-project.sh --fix, bin/nano-doctor.sh --fix, any other repair flag..nanostack/ (read-only inspection only). save-artifact.sh ship is skipped by default; treat artifact persistence as a future opt-in (--save-report).If RUN_MODE == "report_only", jump straight from this section to the Report output section at the end of this skill, then stop. Do not run pre-flight, do not run quality-check (it reads only and is fine), do not enter the PR / CI / deploy flow below.
Run source bin/lib/git-context.sh && detect_git_mode.
If local (no git repo): Skip the entire PR/CI/deploy flow below. Instead:
ship/bin/quality-check.sh (already works without git).open index.html (or the main HTML file) so the user sees it instantly. Then say "Se abrió en tu navegador."If local-git (git, no remote): Run pre-ship check and quality check. Skip PR/CI/deploy. Suggest git tag for versioning. Output: "Listo. Commit: [hash]."
If full: Continue with the normal process below.
Run both checks before proceeding:
ship/bin/pre-ship-check.sh # uncommitted changes, missing tests, staged secrets, branch check
ship/bin/quality-check.sh # broken README links, stale references, writing quality, secrets in diffIf either reports errors, fix them before proceeding. Warnings are informational but should be reviewed.
Resolve context and verify review findings were resolved:
~/.claude/skills/nanostack/bin/resolve.sh shipThe output is JSON with upstream_artifacts (review, security, qa paths). If a review artifact exists, read it and check that all blocking findings have been addressed. For each blocking finding, verify the code at the reported file and line no longer has the issue. If a blocking finding is still present, do NOT proceed. Flag it.
Then verify:
# Are there uncommitted changes?
git status
# Do tests pass?
# (use the project's test command — check package.json, Makefile, etc.)
# Is the branch up to date with the target?
git fetch origin && git log --oneline HEAD..origin/main | head -5If tests fail, fix them first. Do not ship broken code with a "will fix later" comment.
If the branch is behind, rebase or merge:
git rebase origin/main # preferred for clean history
# or
git merge origin/main # if rebase would be messyBefore creating the PR, show the user a full preview. This is a mandatory stop because after creation it's public.
## PR Preview
**Title:** {{title}}
**Branch:** {{branch}} → {{base}}
**Files changed:** {{count}}
### Summary
{{1-3 bullets of what changed and why}}
### Changes
{{file list with one-line description each}}
### Test plan
{{how to verify}}Wait for user approval. Only proceed after explicit confirmation. If the user adjusts something, update the preview and ask again.
After approval, use the template at ship/templates/pr-template.md for the PR body.
gh pr create \
--title "{{concise title, under 70 chars}}" \
--body "$(cat <<'EOF'
{{filled PR template}}
EOF
)"PR title rules:
PR body rules:
After creating the PR, check CI status:
gh pr checks <number> --watchIf CI fails:
gh pr checks <number> --fail-onlyAfter the PR is merged:
# Verify merge completed
gh pr view <number> --json state,mergedAt
# Check deploy pipeline
gh run list --limit 3If the project has a staging/production URL, run a post-deploy checklist:
/qa --quick against prod URL)gh run view --log-failed — any new errors in the deploy?If any check fails: stop and rollback before debugging. A broken prod is worse than a reverted feature.
If something goes wrong after deploy:
# Quick rollback: revert the merge commit
git revert <merge-commit-sha> --mainline 1
gh pr create --title "Revert: {{original PR title}}" --body "Reverting due to {{reason}}"Document what went wrong for the team.
Before creating the PR, verify the standards in ship/references/repo-quality-standards.md (README links, PR/commit quality, repo hygiene). The public repo is the face of the project. ship/bin/quality-check.sh automates the checks it can; use judgment for the rest.
After shipping, do these steps in order:
Step 1: Save the artifact. Run this command now — do not skip it. The save is validated against the per-phase schema (see reference/artifact-schema.md); a normal-mode ship artifact requires summary (object) and context_checkpoint. Report-only ship runs may save a looser shape with run_mode: "report_only".
The snippet below sets safe JSON defaults first so jq --argjson does not fail when a shell variable is unset (PR_NUMBER may legitimately be unset in local-mode ships, on a no-PR push, or when CI has not reported yet).
# Safe defaults so --argjson always gets valid JSON, even when a
# variable was not exported in this ship path.
: "${PR_NUMBER:=null}"
: "${PR_URL:=}"
: "${PR_TITLE:=}"
: "${PR_STATUS:=open}"
: "${CI_PASSED:=false}"
SHIP_JSON=$(jq -n \
--argjson pr_number "$PR_NUMBER" \
--arg pr_url "$PR_URL" \
--arg title "$PR_TITLE" \
--arg status "$PR_STATUS" \
--argjson ci_passed "$CI_PASSED" \
--arg checkpoint_summary "PR #N <title> shipped, CI status, deploy result." \
'{
phase: "ship",
summary: {
pr_number: $pr_number,
pr_url: $pr_url,
title: $title,
status: $status,
ci_passed: $ci_passed
},
context_checkpoint: {
summary: $checkpoint_summary,
key_files: [],
decisions_made: [],
open_questions: []
}
}')
~/.claude/skills/nanostack/bin/save-artifact.sh ship "$SHIP_JSON"
~/.claude/skills/nanostack/bin/sprint-journal.shFor a report-only ship (no PR cut, no commit), save the artifact with run_mode: "report_only" instead so the validator accepts the looser shape:
~/.claude/skills/nanostack/bin/save-artifact.sh ship \
'{"phase":"ship","run_mode":"report_only","summary":"Pre-flight check only; nothing was pushed."}'Step 2: Proof block. Before "How to see the result", emit a proof block summarizing what was verified during the sprint. Read it from session phase_log:
SESSION=$NANOSTACK_STORE/session.json
[ -f "$SESSION" ] || SESSION="$HOME/.nanostack/session.json"
jq -r '
([.phase_log[]? | select(.phase == "review" and .status == "completed")] | length) as $rev |
([.phase_log[]? | select(.phase == "security" and .status == "completed")] | length) as $sec |
([.phase_log[]? | select(.phase == "qa" and .status == "completed")] | length) as $qa |
"Reviewed: \(if $rev > 0 then "yes" else "no" end)\n" +
"Security checked: \(if $sec > 0 then "yes" else "no" end)\n" +
"QA checked: \(if $qa > 0 then "yes" else "no" end)"
' "$SESSION" 2>/dev/nullIf a phase says no, list it under "Not verified" so the user sees what was skipped instead of inferring it from absence.
Step 3: How to see the result.
Read profile from session per reference/session-state-contract.md. The branch differs by profile:
If profile == "guided" (or no git remote, even when professional): Skip the deployment menu and focus on how to try the result locally. Tell the user where the entry point is and the exact command to run, then list anything that is not yet verified (e.g. "I did not deploy this to the internet"). One next action only. Follow reference/plain-language-contract.md for wording. Example:
<!-- guided-output:start -->
Resultado: Listo para probar.
Como verlo:
1. Abri index.html en el navegador.
Que revise:
- La pantalla carga.
- El boton principal responde.
- No encontre secretos en archivos visibles.
Pendiente:
- No esta publicado en internet todavia.
- No revise la seguridad de las dependencias.<!-- guided-output:end -->
If profile == "professional" and autopilot == true: Skip this question. Go directly to Next Step (compound + sprint summary). The user will decide how to run it after the sprint closes.
Otherwise (professional, manual), ask:
How do you want to see it?
- Local — I'll start the server and show you how to open it
- Production — I'll guide you through deploying to the internet
- I'm done — just the commit
If Local (option 1):
index.html in your browser"npm start, node src/server.js, etc.) and tell the user the URLopen commands. Show the path and let the user decide.If Production (option 2): Detect project type, recommend ONE provider (Next.js→Vercel, Node→Railway, Static→Cloudflare Pages, Python→Railway, Go→Fly.io). Walk through: account, connect repo, env vars, push. Mention domain (~$10/yr), SSL (automatic), monitoring (Sentry free + UptimeRobot free). Show monthly cost.
If Done (option 3): Skip to next features.
When RUN_MODE == "report_only", this is the only section that runs. It produces a summary the user can read and act on; the agent itself does not commit to any action.
The report has four blocks:
.nanostack/. List which of review / security / qa are present and pass. Use bin/find-artifact.sh <phase> 1 to confirm freshness. If any are missing or stale, name them.To ship for real:
/review # missing
/security # missing
/qa # missing
session.sh init development --run-mode normal
/shipUse the wording in reference/plain-language-contract.md when PROFILE == "guided" (Resultado / Como verlo / Que revise / Pendiente). Professional output may keep technical terms (PR, CI, branch).
Stop after printing the report. Do not call telemetry-finalize with success; pass report_only so the event reflects what actually happened.
Close with a summary:
Ship: PR #N created. CI passed.
Tests: X → Y (+N new). No regressions.Include before/after test counts when tests were added. Quantify the improvement.
Before handing off to compound or the user:
_F="$HOME/.claude/skills/nanostack/bin/lib/skill-finalize.sh"
[ -f "$_F" ] && . "$_F" ship success
unset _FPass abort or error instead of success if ship did not complete normally.
After shipping, two things happen in order:
First: capture learnings. Run compound immediately:
Use Skill tool: skill="compound"Do not ask. Do not skip. Compound reads the sprint artifacts and saves solutions for future sprints.
Then: close the sprint. This is the last thing the user sees. Make it count.
1. What was built. Summarize what the user now has in plain language. Not phase names or artifact counts. What does the thing DO, where is it, and how to use it.
2. How to use it. Show the exact command or URL to try it right now.
3. What could come next. Suggest 2-3 concrete extensions as /feature commands the user can run immediately.
Example:
Sprint complete. You have a JSON validator CLI.
Try it:
node src/index.js test.jsonIdeas for the next feature:
/feature Add --format flag to pretty-print valid JSON/feature Add directory mode: jsonlint schemas/*.json/feature Add --fix mode that auto-corrects trailing commas
© garagon, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in ship of garagon/nanostack.
Open the folder on GitHubat commit 0372aed
Ship next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ship this skillgaragon/nanostack | 207 | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Design Rationale Investigatorcursor/plugins | 10k | 9 repos | ~2.6k | Automated safety check: Pass | None | |
| Worktrunk Tend CI Guidancemax-sixty/worktrunk | 9k | — | ~6.4k | Automated safety check: Pass | Custom licence | |
| Ansible Backport Creatoransible/ansible | 71k | — | ~1.2k | Automated safety check: Pass | GPL-3.0 | |
| Cap Feature Building WorkflowCapSoftware/Cap | 23k | — | ~2.5k | Automated safety check: Warn | Custom licence | |
| Hunk Release Workflowmodem-dev/hunk | 9.5k | — | ~3.8k | Automated safety check: Pass | MIT |
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
max-sixty/worktrunk
Adds Worktrunk-specific rules to the tend CI workflows: Codecov polling, Rust test commands, labels and review criteria for pull requests handled in CI.
ansible/ansible
Creates backports of a merged Ansible devel pull request onto the right stable branches by cherry-picking its merge commit onto new backport branches.
CapSoftware/Cap
Builds a Cap feature in an isolated Git worktree with disposable dev resources, verification, a recorded demo and a neutral pull request, started with /building.
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
PX4/PX4-Autopilot
Build PX4 board firmware on macOS in the px4-dev Docker container, including git worktrees, and stage commit-labeled artifacts without flashing hardware.
garagon/nanostack
A skill your agent uses when starting non-trivial work (touching 3+ files, new features, refactors, bug investigations).
garagon/nanostack
First-time setup and guided sprint. An agent skill from garagon/nanostack.
garagon/nanostack
Use before shipping to production. An agent skill from garagon/nanostack.
garagon/nanostack
Document what you learned during this sprint. An agent skill from garagon/nanostack.
garagon/nanostack
Orchestrate parallel agent sessions through a sprint. An agent skill from garagon/nanostack.
garagon/nanostack
Add a feature to an existing project with a full sprint. An agent skill from garagon/nanostack.
Works with
Categories
A skill your agent uses when code is ready to ship — creates PRs, merges, deploys, and verifies. Ship is an agent skill from garagon/nanostack. Use when code is ready to ship — creates PRs, merges, deploys, and verifies.
Ship fits situations like: code is ready to ship — creates PRs.
Run `npx skills add garagon/nanostack --skill ship -a claude-code`. Or copy the skill folder (ship in garagon/nanostack) into .claude/skills/ship in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garagon/nanostack --skill ship -a codex`. Or copy the skill folder (ship in garagon/nanostack) into .agents/skills/ship in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add garagon/nanostack --skill ship -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ship, .gemini/skills/ship, .github/skills/ship and .opencode/skills/ship in your project.
Going by SKILL.md and its folder, Ship needs a shell for the scripts in its folder and the command-line tools its instructions call (git, gh, jq, node, fly and vercel). Our summary lists: Python 3; A Bash shell.
SKILL.md contains no URLs. Its commands use git, gh and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ship is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 266 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Ship: Code Design Rationale Investigator (cursor/plugins, 10k stars), Worktrunk Tend CI Guidance (max-sixty/worktrunk, 9k stars), Ansible Backport Creator (ansible/ansible, 71k stars) and Cap Feature Building Workflow (CapSoftware/Cap, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
garagon (a GitHub user) maintains it in garagon/nanostack, which has 207 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on September 10, 2026.
Source: garagon/nanostack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.