- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .claude-plugin | ||
| agents | ||
| commands | ||
| scripts | ||
| skills | ||
| .gitattributes | ||
| .gitignore | ||
| README.md | ||
crowskills
A Claude Code plugin that distributes a collection of skills.
The repository is also its own plugin marketplace, so it can be installed directly from Forgejo.
Install
/plugin marketplace add https://git.crowmaki.me/crowmaki/crowskills.git
/plugin install crowskills@crowskills
To develop against a local checkout instead:
/plugin marketplace add E:/repos/crowskills
/plugin install crowskills@crowskills
Layout
.claude-plugin/
plugin.json # plugin manifest (name, version, author)
marketplace.json # marketplace manifest listing this plugin
commands/
spec-requirements.md, spec-design.md, spec-tasks.md, spec-implement.md
unslop.md
skills/
spec-requirements/
SKILL.md # frontmatter: name + description; body: instructions
references/ # optional long-form material, loaded on demand
spec-design/
spec-tasks/
unslop/
scripts/
bump-version.py # keeps both manifests at the same version
Every directory under skills/ that contains a SKILL.md is picked up
automatically. No registration step is needed.
Spec-driven development
Three skills cover a spec cycle, one phase each, with an approval gate between
them. Specs live at docs/specs/<feature-name>/ in the target repository.
| Phase | Skill | Command | Produces |
|---|---|---|---|
| 1 | spec-requirements |
/spec-requirements <feature> |
requirements.md — numbered REQ/NFR entries, user stories, EARS acceptance criteria |
| 2 | spec-design |
/spec-design <feature> |
design.md — architecture, interfaces, data models, error handling, testing strategy |
| 3 | spec-tasks |
/spec-tasks <feature> |
tasks.md — ordered checklist, each task citing the requirements it satisfies |
| 4 | — | /spec-implement <feature> |
the implementation, task by task |
Each phase reads the phase before it, cites requirement identifiers so the chain stays traceable, and stops for approval instead of running on into the next phase. The skills also load on their own when a request clearly calls for one; the commands exist for driving the cycle deliberately.
/spec-implement is a command with no skill behind it — it drives the approved
task list rather than authoring a document. Each invocation takes one batch of
independent tasks, runs them in parallel as worktree-isolated agents, puts two
adversarial reviewers on each result, merges what survives, and checks the tasks
off. It arms /loop so the batches continue until the list is done, and stops
the loop when implementation contradicts the design instead of diverging from it.
Unslop
unslop removes AI tells from writing. It loads on its own whenever you are
writing prose, and /unslop <file, directory, or glob> runs it deliberately
over documents that already exist.
The command resolves the argument into a file list, reads each file to learn the voice it should keep, and edits in place. Past three files it puts one agent on each, four at a time. Code blocks, quoted text, and identifiers are left alone. It reports which patterns it cut, by number, and stops to ask when a rewrite would change what the document claims rather than how it reads.
Adding a skill
- Create
skills/<your-skill-name>/with aSKILL.mdinside. - Set
namein the frontmatter to match the directory name (lowercase, hyphens, no spaces). - Write the
descriptionfor the dispatcher: say what the skill does and the concrete triggers that should load it. This is the only text Claude sees when deciding whether to use it. - Keep
SKILL.mdfocused; push detail intoreferences/and scripts intoscripts/.
Releasing
Bump the version in both .claude-plugin/plugin.json and
.claude-plugin/marketplace.json, then push:
python scripts/bump-version.py patch # 0.1.0 -> 0.1.1
python scripts/bump-version.py minor # 0.1.0 -> 0.2.0
python scripts/bump-version.py major # 0.1.0 -> 1.0.0
python scripts/bump-version.py 1.4.0 # an exact version
python scripts/bump-version.py patch --dry-run
The script writes only the version line in each manifest, so the rest of the formatting survives. It refuses to run if the two manifests already disagree, which means a hand edit went to one file and not the other. Fix that by hand first.
Installed users pick up changes with /plugin marketplace update crowskills.