claude-shared
CLAUDE.md0 starsChanged 3 months agoMITView on GitHub
Orientation for Claude Code and contributors working inside this repository. claude-shared is a Claude Code plugin monorepo: five plugins from one repository, sharing one spec/ corpus, one Taskfile, and one CI pipeline. Each split is justified by a distribution-contract difference per spec/claude/plugin-scoping/ §"When to split into a separate plugin" — never by topic or count. All five version in lockstep — one release line equal to the repository's release tag. .github/release-automation.yml declares each plugin.json version plus marketplace.json metadata.version; the chore(release):…
In this repository36 other files it gives its agents.
- audience-identifySkill
- backlog-delivery-orchestrateSkill
- backstage-catalog-generateSkill
- blog-authorSkill
- blog-author-triggerSkill
- cicd-pipeline-designSkill
- continuous-improvement-triageSkill
- cookiecutter-template-manageSkill
- docs-audience-tracks-applySkill
- docs-dry-refactorSkill
- github-issue-templates-applySkill
- issue-backlog-partitionSkill
- issue-batch-orchestrateSkill
- issue-orchestrateSkill
- lektorat-applySkill
- lektorat-auto-reviseSkill
- mermaid-diagrams-applySkill
- mkdocs-structure-applySkill
- permission-allowlist-maintainSkill
- portfolio-auditSkill
- portfolio-inflight-triageSkill
- project-structure-applySkill
- pull-request-createSkill
- pull-request-mergeSkill
- pull-request-runner-sweepSkill
- readme-structure-applySkill
- release-notes-curateSkill
- release-publish-triggerSkill
- requirements-elicitSkill
- spec-drift-auditSkill
- specSkill
- tech-stack-captureSkill
- vocab-drift-auditSkill
- workflow-health-triageSkill
- working-copy-startSkill
- yaml-json-schemaSkill
The file
We split this CLAUDE.md into the rules it gives an agent
8 rules. About 0 are common, 2 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
All five version in lockstep — one release line equal to the repository's release tag.
- Distinctive: line 45
When developing inside this repository, launch Claude Code with all in-repo plugins loaded — the root plugin plus each subdirectory plugin:
- Very specific: line 62
Keep CLAUDE.md, spec/, and the plugin manifest in sync with what the repo actually ships.
- Very specific: line 63
Never copy plugin-owned skills into a consumer's .claude/skills/ — distribution happens via the plugin marketplace.
- Very specific: line 64
All generated configuration files (.github/*.yml, Taskfile.yml, workflow YAML) are written in English for portfolio consistency, regardless …
- Very specific: line 71
Create worktrees with task worktree:add -- <branch> [slug]: it branches off origin/develop and places them under …
- Very specific: line 73
Before the first Agent({isolation: "worktree"}) call in a session, set CLAUDE_AGENT_WORKTREE_ROOT (or the equivalent settings hook) to a …
- Distinctive: line 84
Prefer long feature work as a top-level session inside the worktree over a worktree-isolated subagent (its transcript lives under its …
≈ “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
CLAUDE.md
Orientation for Claude Code and contributors working inside this repository.
What this repo is
claude-shared is a Claude Code plugin monorepo: five plugins from one repository, sharing one spec/ corpus, one Taskfile, and one CI pipeline. Each split is justified by a distribution-contract difference per spec/claude/plugin-scoping/ §"When to split into a separate plugin" — never by topic or count.
nolte-shared(repo root) — common delivery lifecycle: planning, specs, PR & release workflow, docs/prose, portfolio. Every adopting repo installs it.nolte-media(plugins/nolte-media/) — image generation and media processing. Split on runtime/dependency: needs Cloudflare / Gemini / Pollinations credentials andvtracer.nolte-engineering(plugins/nolte-engineering/) — implementation, test tiers/cycle, quality gate, frontend optimization, code-security/dependency/license audits. Split on consumer audience: code repos install it on top ofnolte-shared; non-code repos takenolte-sharedalone.nolte-claude-dev(plugins/nolte-claude-dev/) — skill/agent authoring (skill-management,skill-review,agent-review,skills-agents-sweep,skill-agent-catalog-apply,claude-plugin-developer). Split on consumer audience: only adopters who author skills/agents install it, on top ofnolte-shared; thespec/claude/corpus governing authoring stays repo-wide.nolte-planning(plugins/nolte-planning/) — the whole mission→roadmap→feature→sprint chain (mission-*,roadmap-*,feature-decompose,sprint-*, plus the three reviewer agents). Split on consumer audience; kept whole because the chain's skills reference each other. Thespec/project/{mission,roadmap,feature,sprint}/corpus stays repo-wide.
All five version in lockstep — one release line equal to the repository's release tag. .github/release-automation.yml declares each plugin.json version plus marketplace.json metadata.version; the chore(release): <tag> alignment bumps all together. Marketplace plugins[].version entries are intentionally absent; plugin-version resolution takes each plugin's own plugin.json first.
Layout
.claude-plugin/plugin.json,.claude-plugin/marketplace.json—nolte-sharedmanifest; marketplace catalog listing all five plugins (downstream install source)skills/<name>/SKILL.md,agents/<name>.md—nolte-sharedskills (one folder each) and sub-agentsplugins/nolte-{media,engineering,claude-dev,planning}/— the other four plugins, each with its own.claude-plugin/plugin.json,skills/, andagents/spec/— bilingual specifications governing all five plugins and project conventions (repo-wide; shipped only inside thenolte-sharedpayload)docs/— bilingual MkDocs source (docs/de/,docs/en/); the catalog renders each plugin under{skills,agents}/<plugin>/, configured indocs/catalog-sources.ymlproject/— this repo's own planning surface:mission.md,goals.md,roadmap.md,features/,sprints/,blog-triggers/(driven by thenolte-planningskills; this repo dogfoods that plugin)portfolio/— portfolio-level data (tech-stack.yml,aggregate.yml,schemas/)scripts/— automation behind the Taskfile targets (validate_skills.py,wip_journal.py,check_links.py,worktree_add.sh, …);validate_skills.pyauto-discovers every plugin underplugins/.claude/— this repo's own Claude Code config (not shipped):settings.jsonwires the journal/guard/validate hooks and permission allowlist;rules/*.mdare instruction rules, loaded every session when they have nopaths:, otherwise only when a matching file is touched
Plugin skills are namespaced by plugin name, e.g. /nolte-shared:spec, /nolte-media:image-generate, /nolte-engineering:quality-gate, /nolte-claude-dev:skill-management, /nolte-planning:sprint-plan.
Command entry points
Local automation runs through Taskfile.yml:
task setup— install pre-commit hooks (run once after cloning)task lint— pre-commit checkstask test— validate every skill/agent frontmatter (scripts/validate_skills.py)task docs— build the MkDocs sitetask plugin:reload— launch Claude Code with this repo loaded as a plugin (dogfooding)task worktree:add -- <branch> [slug]— create a spec-conformant worktree offorigin/develop(see §Parallel working copies)task resume— list this working copy's resumable Claude Code sessions (see §Crash recovery)
Dogfooding
When developing inside this repository, launch Claude Code with all in-repo plugins loaded — the root plugin plus each subdirectory plugin:
claude --plugin-dir . --plugin-dir ./plugins/nolte-media --plugin-dir ./plugins/nolte-engineering --plugin-dir ./plugins/nolte-claude-dev --plugin-dir ./plugins/nolte-planningtask plugin:reload runs exactly this. Use /reload-plugins inside the session to pick up changes without restarting.
Conventions
- New skills are scaffolded via
/nolte-claude-dev:skill-management. - Specs are authored and translated via
/nolte-shared:spec. - Project-structure drift is checked via
/nolte-shared:project-structure-apply. - Pull requests are created via
/nolte-shared:pull-request-createfollowingspec/project/pull-request-workflow/.
Authoring rules
- Keep
CLAUDE.md,spec/, and the plugin manifest in sync with what the repo actually ships. - Never copy plugin-owned skills into a consumer's
.claude/skills/— distribution happens via the plugin marketplace. - All generated configuration files (
.github/*.yml,Taskfile.yml, workflow YAML) are written in English for portfolio consistency, regardless of the language used in conversation.
Parallel working copies (worktrees)
spec/project/parallel-working-copies/ is the single source of truth. Operational reminders for any session in this repository:
- The primary checkout (
~/repos/github/claude-shared/) is for integration only and MUST stay ondevelopat all times. Never create, switch to, or commit a feature branch (feat/,fix/,chore/,docs/,exp/) here, even with one feature in flight. Every change to specs, skills, agents, or docs happens in a dedicated worktree offdevelop(spec §Branch-to-worktree mapping). A primary checkout found on a feature branch is drift to repair (migrate the branch into a worktree, reset the primary checkout toorigin/develop), not a state to extend. - Create worktrees with
task worktree:add -- <branch> [slug]: it branches offorigin/developand places them under${NOLTE_WORKTREE_ROOT:-~/repos/.worktrees}/claude-shared/<slug>/(harness-/agent-initiated:.../claude-shared/agents/<slug>/). Never nest a worktree under.claude/worktrees/(spec §Path layout). - Plan before work, then work in a fresh resumable session. A foundational plan MUST be on disk at
.resume/<slug>/plan.md(gitignored;task worktree:addseeds a stub) before substantive work in a new worktree. Then work in a fresh top-level session started from the worktree (cd <worktree> && claude), not a dispatched subagent or Workflow run: only top-level sessions can be resumed (spec §Lifecycle: Plan before work, §Claude Code session scoping). - Before the first
Agent({isolation: "worktree"})call in a session, setCLAUDE_AGENT_WORKTREE_ROOT(or the equivalent settings hook) to a root under${NOLTE_WORKTREE_ROOT:-~/repos/.worktrees}/claude-shared/agents/if the harness default would use.claude/worktrees/. - Enforced at two layers: the
PreToolUsehookscripts/guard_feature_branch_hook.py(wired in.claude/settings.json) refusesgit checkout/switch/branchonto afeat/ fix/ chore/ docs/ exp/branch in the primary checkout, and theguard-primary-checkoutpre-commit hook (scripts/guard_primary_checkout.sh) blocks a commit if the primary checkout is offdevelop. Both no-op inside linked worktrees.
Crash recovery / resuming interrupted work
A crash, terminal close, or session expiry does not destroy in-flight work: Claude Code persists every top-level session transcript under ~/.claude/projects/<encoded-cwd>/.
- Session-level (first thing to reach for):
task resumein the affected working copy lists its resumable sessions newest-first with their opening prompt; thenclaude --resume <id>(orclaude --continuefor the latest). - Always-on journal:
scripts/wip_journal.py(aSessionStart/PostToolUse/PreCompacthook in.claude/settings.json) appends a "where was I" trail to the gitignored.resume/session-journal.md. - Skill-level (structured decision log): in-scope skills/agents checkpoint to
.resume/<name>/<run-id>.ymlperspec/claude/resumable-work/; re-invoking with the same inputs surfaces the resume prompt.
Prefer long feature work as a top-level session inside the worktree over a worktree-isolated subagent (its transcript lives under its parent and cannot be resumed alone); together with the plan at .resume/<slug>/plan.md this makes an interrupted feature recoverable rather than reconstructed.
For multi-source research that must survive a crash, prefer the Workflow harness over the built-in deep-research skill: a Workflow run persists every agent transcript and supports resumeFromRunId, whereas deep-research holds sources only in conversation context until its final report.
Blog-author trigger (feature → done)
This repository's blog-author trigger roles (source consumer, blog consumer, the in_progress → done trigger event, and the cross-repo write rule) are documented in .claude/rules/blog-author-trigger.md, a path-scoped rule that loads automatically while working under project/features/, project/sprints/, or project/blog-triggers/. The authoritative contract is spec/project/blog-author-trigger/.
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.

