hcf
CLAUDE.md79 starsChanged 35 days agoMITView on GitHub
A Claude Code plugin for autonomous development orchestration with parallel TDD execution. This repo is the plugin — it contains no application code, only markdown (skills, agents, docs) and bash (hooks, tests). This file is HCF's own project config. It is not the template shipped to users — that lives inline in skills/project-setup/SKILL.md, and editing this file has no effect on what /hcf:project-setup generates. Do not invoke hcf:plan-create or hcf:plan-orchestrate for work in this repo. HCF cannot bootstrap itself: plan-orchestrate…
- Commits and pushes
In this repository4 other files it gives its agents.
- plan-createSkill
- plan-orchestrateSkill
- project-setupSkill
- project-updateSkill
The file
We split this CLAUDE.md into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
Do not invoke hcf:plan-create or hcf:plan-orchestrate for work in this repo.
- Distinctive: line 71
Commit the changelog + version bump together.
- Very specific: line 72
Run claude plugin tag --push — auto-generates a tag in the form hcf--v{version} (note the double dash between plugin name and v) and pushes …
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
HCF
A Claude Code plugin for autonomous development orchestration with parallel TDD execution. This repo is the plugin — it contains no application code, only markdown (skills, agents, docs) and bash (hooks, tests).
This file is HCF's own project config. It is not the template shipped to
users — that lives inline in skills/project-setup/SKILL.md, and editing this
file has no effect on what /hcf:project-setup generates.
Do not use HCF to build HCF
Do not invoke hcf:plan-create or hcf:plan-orchestrate for work in this
repo. HCF cannot bootstrap itself: plan-orchestrate requires
.claude/testing.md and .claude/code-standards.md, which this repo
deliberately does not have, and its hook agents would resolve against the very
agents/ directory being edited. Work here directly, TDD where practical.
The plugin's own workflow is for consumer projects.
Commands
# Run the full test suite (no dependencies; bash 3.2 compatible)
./tests/run-tests.sh
# Run one suite
./tests/run-tests.sh test-parse
# Lint shell
shellcheck hooks/*.sh tests/*.shKey Conventions
- Shell must run on bash 3.2 (stock macOS
/bin/bash). Nodeclare -A, nomapfile, no${var,,}. Use parallel indexed arrays instead of associative ones. LC_ALL=Con everysortandawk, or ordering differs between a macOSen_US.UTF-8user and a LinuxCone.- BSD tools only — no
grep -P, no GNUsed -isemantics, no awkgensub. The plugin ships to macOS and Linux. - Never
ls "$DIR"/*.md— plugin install paths contain spaces. Useshopt -s nullglobwith aforglob loop, and quote every path expansion. - Hook scripts self-locate via
${BASH_SOURCE[0]}; project root comes from${CLAUDE_PROJECT_DIR:-$PWD}. ${CLAUDE_PLUGIN_ROOT}is only set forhooks.jsonentries, not for a skill's Bash calls. Skills use theBase directory for this skillvalue the harness states at load.HOOKS.mdis the authoritative reference for the hook system. Skills point there rather than restating the routine — restating it is what caused #4.- Hook discovery is
hooks/discover-hooks.sh. Never enumerate agent files by hand or write a glob loop to do it. - Any change to shell behavior needs a test in
tests/test-*.sh; the runner auto-discovers them.
Release Process
This repo is a Claude Code plugin published via its own marketplace manifest.
Releases are cut in their own PR — feature PRs never bump the version, they
only add entries under [Unreleased] in CHANGELOG.md.
To cut a release:
- Move entries from
[Unreleased]to a new[X.Y.Z] — YYYY-MM-DDsection inCHANGELOG.md. Add a new comparison link at the bottom and update the[Unreleased]link to point to the new tag. - Bump
versionin both.claude-plugin/plugin.jsonand.claude-plugin/marketplace.json(must match, orclaude plugin tagrefuses). - Commit the changelog + version bump together.
- Run
claude plugin tag --push— auto-generates a tag in the formhcf--v{version}(note the double dash between plugin name andv) and pushes it.--dry-runpreviews without creating anything. - Mirror to GitHub Releases:
gh release create hcf--v{version} --title "hcf--v{version}" --notes-file <changelog-section> --latest. Always pass--latest— without it GitHub picks the "Latest" badge by creation timestamp, which is wrong given this repo's tags are already out of chronological order. - Users update via
/plugin marketplace update hcf, then/plugin install hcf@hcf, then/reload-plugins. The reload step is non-obvious and required.
Versioning: semver, read as BREAKING.FEATURE.FIX. New phases / agents /
skills = minor. Removing a generated file is treated as minor since existing
user data isn't destroyed.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

