Skip to content

Project structure

Current top-level layout:

claude-shared/ ├── .claude/ # local Claude Code settings (not packaged) ├── .claude-plugin/ │ └── plugin.json # plugin manifest: name, version, author, repo ├── skills/ │ ├── skill-management/ │ │ └── SKILL.md │ └── spec/ │ ├── SKILL.md │ └── templates/ │ └── spec.template.md ├── spec/ │ ├── .spec-config.yml │ ├── README.md # autogenerated index │ └── claude/ │ ├── agent-management/ │ │ ├── en.md # canonical │ │ └── de.md │ └── skill-management/ │ ├── en.md │ └── de.md ├── docs/ # MkDocs sources (this site) ├── mkdocs.yml └── README.md

Planned but not yet created:

agents/ # reusable sub-agent definitions

What goes where

The table below maps each kind of content to its location on disk:

Content Location
Plugin manifest .claude-plugin/plugin.json
Skill sources skills/<name>/
Skill templates/refs skills/<name>/templates/, references/, examples/
Agent sources agents/<name>.md (single self-contained file; no sibling folder)
Specifications spec/<topic>/<slug>/<lang>.md
Spec config spec/.spec-config.yml
Spec index spec/README.md (autogenerated—don't hand-edit)
User documentation docs/<lang>/…

Languages

Three language conventions apply across the repository:

  • Skill and agent content: English—this keeps Claude's processing cost low. Skills/agents may still instruct Claude to respond to the user in the user's language.
  • Specifications: canonical EN, translation DE, structurally in sync.
  • Documentation (docs/): DE and EN via mkdocs-static-i18n.

Plugin namespace

The plugin is called nolte-shared (see .claude-plugin/plugin.json). Skills are invocable as /nolte-shared:<skill>. The plugin name stays stable—it's part of every invocation and every document.

Tech stack

The repository is a documentation-and-automation project rather than a compiled application: there is no runtime service, only a Claude Code plugin plus the tooling that authors, lints, and publishes it. The canonical inventory of these building blocks—each with its kind, group, role, and source-of-truth file—is the hand-curated portfolio source portfolio/tech-stack.yml (governed by spec/portfolio/tech-stack/); the list below mirrors it and must not drift from it.

Component Role Source of truth
Python Runtime for the validation, catalog-generation, and journal scripts under scripts/ scripts/
MkDocs (Material + static-i18n) Documentation generator producing the bilingual site under docs/ mkdocs.yml
Task Task orchestrator running the quality-gate, docs, lint, and dogfooding targets Taskfile.yml
Vale Prose linter using the pinned nolte/vale-style vocabularies .vale.ini
pre-commit Hook framework wiring whitespace, YAML, Markdown, and Vale checks .pre-commit-config.yaml
Renovate Automated dependency-update bot extending the nolte/gh-plumbing preset renovate.json5
GitHub Actions CI provider running the lint, test, docs, and release workflows .github/workflows/

Pinning intent: every MkDocs plugin is pinned in docs/requirements.txt, the Vale style is pinned to a nolte/vale-style release in .vale.ini, and the reusable CI workflows pin their nolte/gh-plumbing version. Project-local additions on top of the portfolio baseline are listed inline above next to the canonical source.

Sources

  • portfolio/tech-stack.yml: canonical portfolio tech-stack inventory (per spec/portfolio/tech-stack/)
  • Taskfile.yml, mkdocs.yml, .vale.ini, .pre-commit-config.yaml: the per-component source-of-truth files referenced above