Go to file
bastien 239d91db67 feat(profile): partition skills/plugins/MCPs/CLIs by usage profile
Ship lib/profile.sh + 9 profiles in lib/profiles/. A profile is a
plain-text file listing items + types (gstack | personal | external |
plugin@<marketplace> | mcp | cli). `profile set <name>` enables the
listed items and disables the rest:

  - gstack/personal/external skills: symlink toggle skills/ ↔
    skills-disabled/ (gstack__<name> prefix to avoid collisions; no
    prefix for personal/external).
  - plugins typed `plugin@<marketplace>`: actually toggled via
    `claude plugin enable|disable <name>@<marketplace>`. Allowlist:
    MANAGED_PLUGINS = ui-ux-pro-max, plugin-dev, pr-review-toolkit.
    Denylist: PROTECTED_PLUGINS = caveman, security-guidance,
    superpowers (always-on, never disabled even if absent from a
    profile).
  - mcp magic: delegated to lib/toggle-external.sh which already
    handles the MAGIC_API_KEY env lookup. Other MCPs stay advisory.
  - cli (rtk, gsd, ctx7, graphify): status-only, never auto-installed.

Profiles shipped:
  web        public website work — frontend + content + light dev
  seo        SEO + GEO + W3C audit (search/AI indexability + a11y)
  web-full   production website end-to-end (web ∪ seo ∪ qa-only/canary)
  backend    backend / API / system dev — no design, no SEO
  design     visual QA, design systems, mockups, polish
  dev        daily code work — features, fixes, refactor, ship
  qa         site testing, perf, canary, validation
  audit      comprehensive audit — security + SEO + perf + health
  minimal    strip all gstack skills (quiet session)

Commands:
  profile list / show <name> / current / apply <name> / set <name> /
  reset / diff <a> <b>

`current` heuristic returns "full" when nothing is disabled, otherwise
picks the profile with the highest available-ratio (counts both
"enabled" and "installed" — the latter for CLIs). Tiebreaker: larger
profile total wins, so web-full beats web at a 100% tie.

`reset` re-enables every gstack skill but does NOT touch plugins —
the user re-enables a managed plugin manually or via `apply <profile>`.
This is documented in the trailing info line.

Integration:
  - skills/profile/SKILL.md — `/profile` slash command, lists profiles,
    documents the per-type mechanism, points at lib/profile.sh.
  - agents/plugin-advisor.md — DETECT phase calls `profile current`,
    OUTPUT adds a PROFILE line, and TOGGLING EXTERNAL TOOLS gains a
    "Skill profiles" section with a signal → profile recommendation
    table.
  - lib/toggle-external.sh — header pointer to profile.sh for fine-
    grained activation (toggle-external still owns whole-gstack and
    magic-MCP toggles).
  - Makefile — `make profile cmd="set <name>"`, profile-list,
    profile-current, profile-reset.

Tested end-to-end: `set web` enables ui-ux-pro-max + magic; `set seo`
disables ui-ux-pro-max; `set minimal` disables ui-ux-pro-max but
spares always-on plugins; `reset` restores all 64 skills; shellcheck
clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 02:09:28 +02:00
.claude chore(memory): capitalize BDR-006 + LRN-005 + LRN-006 from caveman session 2026-05-03 23:06:26 +02:00
agents feat(profile): partition skills/plugins/MCPs/CLIs by usage profile 2026-05-05 02:09:28 +02:00
hooks fix(install,session-start): enable always-on plugins + truthful banner 2026-05-03 23:03:21 +02:00
lib feat(profile): partition skills/plugins/MCPs/CLIs by usage profile 2026-05-05 02:09:28 +02:00
skills feat(profile): partition skills/plugins/MCPs/CLIs by usage profile 2026-05-05 02:09:28 +02:00
skills-external chore: update gstack submodule to v0.17.0 2026-04-16 01:08:28 +02:00
templates feat(memory): introduce .claude/{tasks,memory,audits}/ governance layout 2026-04-23 16:06:00 +02:00
.env.example feat(toggle-external): manage Magic MCP (21st-dev) — installed disabled by default 2026-04-21 20:28:03 +02:00
.gitignore feat(caveman): full install — plugin + standalone hooks + MCP scaffold 2026-05-03 23:02:47 +02:00
.gitmodules added git management 2026-04-03 03:46:34 +02:00
.graphifyignore add .graphifyignore to exclude gstack submodule and install logs 2026-04-13 15:01:25 +02:00
CHANGELOG.md chore(release): update docs and changelog for v3.4.0 2026-04-15 22:35:58 +02:00
CLAUDE.md feat(capitalize): enforce English in all memory registry entries 2026-04-23 16:24:04 +02:00
doctor.sh feat(caveman): full install — plugin + standalone hooks + MCP scaffold 2026-05-03 23:02:47 +02:00
install-plugins.sh fix(install,session-start): enable always-on plugins + truthful banner 2026-05-03 23:03:21 +02:00
install.sh track install.sh bootstrap script 2026-04-13 14:08:48 +02:00
link.sh feat(toggle): enable/disable non-marketplace tools via lib/toggle-external.sh 2026-04-21 13:50:40 +02:00
Makefile feat(profile): partition skills/plugins/MCPs/CLIs by usage profile 2026-05-05 02:09:28 +02:00
MIGRATION.md docs: add MIGRATION.md for existing projects 2026-04-23 16:07:02 +02:00
plugins.lock.json feat(caveman): full install — plugin + standalone hooks + MCP scaffold 2026-05-03 23:02:47 +02:00
README.md feat(caveman): full install — plugin + standalone hooks + MCP scaffold 2026-05-03 23:02:47 +02:00
settings.json fix(install,session-start): enable always-on plugins + truthful banner 2026-05-03 23:03:21 +02:00
update-all.sh feat(caveman): full install — plugin + standalone hooks + MCP scaffold 2026-05-03 23:02:47 +02:00
USAGE.md docs(usage): sync /onboard table with .claude/ paths 2026-04-23 16:06:36 +02:00
version.txt chore(release): update docs and changelog for v3.4.0 2026-04-15 22:35:58 +02:00

claude-config

Global Claude Code configuration — agents, skills, plugins, and project templates.

Guide d'utilisation complet : voir USAGE.md — workflows typiques, exemples par type de projet, arbre de décision "quel skill utiliser ?".


Overview

This repo is your personal Claude Code setup, versioned and reproducible across machines.

claude-config/
├── CLAUDE.md              # Global coding preferences (style, rules, workflow)
├── settings.json          # Global permissions (deny / ask / allow rules)
├── install.sh             # Bootstrap: Claude Code CLI + auth + shell env vars + link + plugins
├── install-plugins.sh     # One-shot installer: prerequisites + all plugins
├── link.sh                # Symlinks this repo into ~/.claude/
├── doctor.sh              # Setup diagnostic
├── update-all.sh          # One-command update for all components
├── Makefile               # Unified entry point: make install / doctor / update
├── plugins.lock.json      # Version pinning for non-marketplace dependencies
├── hooks/                 # Session start, statusline, RTK rewrite
├── agents/                # Execution units called by skills (never invoked directly)
├── skills/                # Entry points invoked via /skill-name
├── skills-external/       # Git submodules (gstack)
├── templates/             # Per-project config templates (CLAUDE.md, settings, .claudeignore)
└── lib/                   # Shared shell functions (plugin detection)

Architecture principle:

  • skills/ = entry points you invoke via /skill-name
  • agents/ = execution units called by skills (never invoked directly by user)
  • templates/ = symlinked to ~/.claude/templates/ — copy into projects via /onboard or manually
  • Graphify builds a knowledge graph of any codebase (/graphify query), producing a navigable wiki in graphify-out/wiki/. This map helps Claude understand project structure, find relevant code faster, and reason across files. Essential for large-scope tasks (multi-file features, complex bugs, architectural changes). Small tasks should skip it and read files directly.

Fresh install (new machine)

# 1. Clone with submodules
git clone --recurse-submodules git@github.com:youruser/claude-config.git
cd claude-config

# 2. Create a free Context7 account at https://context7.com/
#    Copy your API key and set it:
export CONTEXT7_API_KEY="your-key-here"

# 3. Bootstrap (CLI + auth + symlinks + plugins)
bash install.sh

# 4. Verify setup
bash doctor.sh

# 5. Restart Claude Code — plugins load automatically

All scripts use their own location to find the repo — run them from anywhere. Install output is logged to install-YYYYMMDD-HHMMSS.log.


Installed components

Component Type Description Docs
Superpowers Plugin (required) Brainstorming, planning, subagent-driven dev, code review, branch finishing. Required by /init-project and /ship-feature. obra/superpowers-marketplace
GStack Plugin (toggle) Full-product workflow: UI + design + deploy + browser QA. Skip for backend/CLI projects. garrytan/gstack
GSD v2 External CLI Multi-session orchestration: crash recovery, cost tracking, parallel workers, context-fresh execution. gsd-build/gsd-2
RTK Plugin (always on) Code rewrite hook. Zero passive cost. rtk-ai/rtk
security-guidance Plugin (always on) Security hook. Zero passive cost. anthropics/claude-code
ui-ux-pro-max Plugin (toggle) Design system, color/typography choices. Enable for design-heavy projects. nextlevelbuilder/ui-ux-pro-max-skill
Context7 Plugin (toggle) Fast-evolving libs doc lookup (Next.js, React, Prisma...). Requires a free account + API key (see install). context7.com
pr-review-toolkit Plugin (toggle) Multi-agent PR review. anthropics/claude-code
Graphify Python CLI Codebase → knowledge graph → navigable wiki. Helps Claude map and search projects efficiently. pypi: graphifyy
Caveman Plugin (always on) + hooks Output token compression (~75%) via caveman-speak. Full install = plugin (/caveman, cavecrew, caveman-commit, caveman-review, caveman-stats) + standalone hooks (statusline + stats badge). The optional caveman-shrink MCP proxy compresses upstream-server prose — manual config required (it wraps another MCP server). See install-plugins.sh STEP 5.5 for the snippet. JuliusBrussee/caveman

Versions are pinned in plugins.lock.json. To update: edit the file, then re-run install-plugins.sh.


Slash commands

Command Description
/init-project Initialize a complete project from scratch (full orchestrator, 12+ steps)
/ship-feature Ship a feature end-to-end with validation gates (full orchestrator)
/onboard Onboard an existing project — generate CLAUDE.md, settings, .claudeignore
/feat Small feature implementation (1-5 files, lightweight)
/bugfix Structured bug fix with root cause investigation
/hotfix Quick fix for superficial bugs (typos, CSS, config — max 2 files)
/analyze Deep factual analysis of code before any modification
/refactor Improve code quality without changing behavior
/code-clean Dead code removal, style/norm enforcement
/doc Documentation audit and sync — detect stale docs, patch
/seo Full SEO/GEO audit and optimization
/commit-change Smart commit grouping from staged/unstaged changes
/graphify Codebase knowledge graph — navigation for large-scope tasks
/plugin-check Check active plugins vs project needs — recommend enable/disable
/health Run setup diagnostic
/status Consolidated project snapshot — plugins, git, GSD milestone
/skills-perso List personal (user-created) skills

Three core workflows

From scratch — /init-project

/plugin-check "description"     # configure plugins (also runs as STEP 0)
/init-project "description"     # interview → scaffold → implement → review
/ship-feature "next feature"    # ship feature by feature

Existing project — /onboard

cd my-existing-project/
/onboard                        # generates CLAUDE.md + settings + .claudeignore
/plugin-check "project type"
/ship-feature "next feature"

New feature — /ship-feature

/ship-feature "feature description"
# → STEP 0: plugin check
# → STEP 1-2: brainstorm + plan (superpowers)
# → STEP 3: validation gate — user approval required
# → STEP 4-7: implement (TDD) → review → finish
# → STEP 8: sync README

For small features (1-5 files), use /feat instead — no orchestration overhead.


Settings and permissions

Settings follow a hierarchy (highest priority first):

managed-settings.json   → enterprise (cannot be overridden)
CLI flags               → session only
.claude/settings.local  → personal machine overrides (gitignored)
.claude/settings.json   → project rules (committed)
~/.claude/settings.json → global user rules (this repo)

DENY always wins over ALLOW at any level. .claudeignore applies independently.

Templates for per-project settings are in templates/settings/. Copy them with /onboard or manually:

CONF="$(dirname "$(readlink ~/.claude/CLAUDE.md)")"
cp "$CONF/templates/settings/settings.json" .claude/settings.json
cp "$CONF/templates/settings/.claudeignore" .claudeignore

Diagnostic and maintenance

# Terminal
bash doctor.sh              # full diagnostic (symlinks, plugins, permissions, token budget)
bash update-all.sh          # update all components (CLI, plugins, submodules, symlinks)

# Claude Code
/health                     # runs doctor.sh
/status                     # project snapshot (plugins, git, GSD milestone)
/plugin-check "description" # audit plugin config vs project needs

# Makefile (from repo directory)
make install                # bootstrap: CLI + auth + symlinks + plugins
make doctor                 # diagnostic
make update                 # pull + submodules + symlinks + doctor
make plugin                 # install plugins only
make new-skill name=myskill # scaffold agent + skill files

doctor.sh checks: symlinks, GStack submodule, prerequisites (git, Node, Cargo, Python, Claude Code), plugins, permissions, token budget, config consistency.