codebyplan 1.5.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +4462 -748
- package/package.json +5 -1
- package/templates/.gitkeep +0 -0
- package/templates/README.md +20 -0
- package/templates/agents/cbp-cc-executor.md +213 -0
- package/templates/agents/cbp-database-agent.md +229 -0
- package/templates/agents/cbp-improve-claude.md +245 -0
- package/templates/agents/cbp-improve-round.md +284 -0
- package/templates/agents/cbp-mechanical-edits.md +111 -0
- package/templates/agents/cbp-research.md +282 -0
- package/templates/agents/cbp-round-executor.md +604 -0
- package/templates/agents/cbp-security-agent.md +134 -0
- package/templates/agents/cbp-task-check.md +213 -0
- package/templates/agents/cbp-task-planner.md +582 -0
- package/templates/agents/cbp-test-e2e-agent.md +363 -0
- package/templates/agents/cbp-testing-qa-agent.md +400 -0
- package/templates/context/mcp-docs.md +139 -0
- package/templates/hooks/README.md +236 -0
- package/templates/hooks/cbp-auto-test-hooks.sh +44 -0
- package/templates/hooks/cbp-lint-format-on-edit.sh +159 -0
- package/templates/hooks/cbp-maestro-yaml-validate.sh +100 -0
- package/templates/hooks/cbp-mcp-migration-guard.sh +32 -0
- package/templates/hooks/cbp-mcp-round-sync.sh +79 -0
- package/templates/hooks/cbp-mcp-worktree-inject.sh +76 -0
- package/templates/hooks/cbp-notify.sh +68 -0
- package/templates/hooks/cbp-plugin-dispatch.sh +29 -0
- package/templates/hooks/cbp-pre-commit-quality-gate.sh +204 -0
- package/templates/hooks/cbp-statusline.sh +347 -0
- package/templates/hooks/cbp-subagent-statusline.sh +182 -0
- package/templates/hooks/cbp-test-coverage-gate.sh +144 -0
- package/templates/hooks/cbp-test-hooks.sh +320 -0
- package/templates/hooks/hooks.json +85 -0
- package/templates/hooks/validate-context-usage.sh +59 -0
- package/templates/hooks/validate-git-commit.sh +78 -0
- package/templates/hooks/validate-git-stash-deny.sh +32 -0
- package/templates/hooks/validate-structure-lengths.sh +57 -0
- package/templates/hooks/validate-structure-lib.sh +104 -0
- package/templates/hooks/validate-structure-patterns.sh +54 -0
- package/templates/hooks/validate-structure-scope.sh +33 -0
- package/templates/hooks/validate-structure-smoke.sh +95 -0
- package/templates/hooks/validate-structure-templates.sh +34 -0
- package/templates/hooks/validate-structure.sh +69 -0
- package/templates/rules/.gitkeep +0 -0
- package/templates/rules/README.md +47 -0
- package/templates/rules/context-file-loading.md +52 -0
- package/templates/rules/scope-vocabulary.md +64 -0
- package/templates/rules/todo-backend.md +109 -0
- package/templates/settings.project.base.json +55 -0
- package/templates/settings.user.base.json +25 -0
- package/templates/skills/cbp-build-cc-agent/SKILL.md +139 -0
- package/templates/skills/cbp-build-cc-agent/examples/read-only-reviewer.md +32 -0
- package/templates/skills/cbp-build-cc-agent/examples/with-hooks.md +41 -0
- package/templates/skills/cbp-build-cc-agent/examples/with-skills-preload.md +25 -0
- package/templates/skills/cbp-build-cc-agent/reference/cbp-quality.md +153 -0
- package/templates/skills/cbp-build-cc-agent/reference/frontmatter-fields.md +37 -0
- package/templates/skills/cbp-build-cc-agent/reference/permission-modes.md +18 -0
- package/templates/skills/cbp-build-cc-agent/scripts/validate-agent.sh +67 -0
- package/templates/skills/cbp-build-cc-agent/templates/agent.md +66 -0
- package/templates/skills/cbp-build-cc-claude-file/SKILL.md +178 -0
- package/templates/skills/cbp-build-cc-claude-file/examples/minimal-project.md +33 -0
- package/templates/skills/cbp-build-cc-claude-file/examples/monorepo-with-imports.md +39 -0
- package/templates/skills/cbp-build-cc-claude-file/reference/imports.md +72 -0
- package/templates/skills/cbp-build-cc-claude-file/reference/what-belongs.md +39 -0
- package/templates/skills/cbp-build-cc-claude-file/templates/project-claude-md.md +48 -0
- package/templates/skills/cbp-build-cc-claude-file/templates/user-claude-md.md +22 -0
- package/templates/skills/cbp-build-cc-memory/SKILL.md +201 -0
- package/templates/skills/cbp-build-cc-memory/examples/feedback-memory.md +11 -0
- package/templates/skills/cbp-build-cc-memory/examples/project-memory.md +11 -0
- package/templates/skills/cbp-build-cc-memory/examples/reference-memory.md +13 -0
- package/templates/skills/cbp-build-cc-memory/examples/user-memory.md +14 -0
- package/templates/skills/cbp-build-cc-memory/reference/memory-types.md +59 -0
- package/templates/skills/cbp-build-cc-memory/reference/when-to-save.md +62 -0
- package/templates/skills/cbp-build-cc-memory/templates/MEMORY-index.md +4 -0
- package/templates/skills/cbp-build-cc-memory/templates/memory-entry.md +15 -0
- package/templates/skills/cbp-build-cc-mode/SKILL.md +99 -0
- package/templates/skills/cbp-build-cc-rule/SKILL.md +176 -0
- package/templates/skills/cbp-build-cc-rule/examples/global-rule.md +19 -0
- package/templates/skills/cbp-build-cc-rule/examples/scoped-rule.md +41 -0
- package/templates/skills/cbp-build-cc-rule/reference/paths-patterns.md +48 -0
- package/templates/skills/cbp-build-cc-rule/templates/rule.md +32 -0
- package/templates/skills/cbp-build-cc-settings/SKILL.md +220 -0
- package/templates/skills/cbp-build-cc-settings/examples/hooks-config.json +64 -0
- package/templates/skills/cbp-build-cc-settings/examples/permissions-config.json +34 -0
- package/templates/skills/cbp-build-cc-settings/examples/sandbox-config.json +42 -0
- package/templates/skills/cbp-build-cc-settings/reference/cbp-conventions.md +104 -0
- package/templates/skills/cbp-build-cc-settings/reference/permission-rules.md +61 -0
- package/templates/skills/cbp-build-cc-settings/reference/scope-precedence.md +73 -0
- package/templates/skills/cbp-build-cc-settings/reference/settings-fields.md +166 -0
- package/templates/skills/cbp-build-cc-settings/templates/settings.json +23 -0
- package/templates/skills/cbp-build-cc-settings/templates/settings.local.json +10 -0
- package/templates/skills/cbp-build-cc-skill/SKILL.md +154 -0
- package/templates/skills/cbp-build-cc-skill/examples/dynamic-context.md +31 -0
- package/templates/skills/cbp-build-cc-skill/examples/fork-skill.md +22 -0
- package/templates/skills/cbp-build-cc-skill/examples/knowledge-skill.md +25 -0
- package/templates/skills/cbp-build-cc-skill/examples/task-skill.md +29 -0
- package/templates/skills/cbp-build-cc-skill/reference/cbp-quality.md +157 -0
- package/templates/skills/cbp-build-cc-skill/reference/frontmatter-fields.md +35 -0
- package/templates/skills/cbp-build-cc-skill/reference/string-substitutions.md +60 -0
- package/templates/skills/cbp-build-cc-skill/scripts/validate-skill.sh +90 -0
- package/templates/skills/cbp-build-cc-skill/templates/skill.md +51 -0
- package/templates/skills/cbp-checkpoint-check/SKILL.md +156 -0
- package/templates/skills/cbp-checkpoint-complete/SKILL.md +109 -0
- package/templates/skills/cbp-checkpoint-create/SKILL.md +287 -0
- package/templates/skills/cbp-checkpoint-end/SKILL.md +241 -0
- package/templates/skills/cbp-checkpoint-update/SKILL.md +115 -0
- package/templates/skills/cbp-frontend-a11y/SKILL.md +109 -0
- package/templates/skills/cbp-frontend-a11y/reference/aria-roles-states.md +130 -0
- package/templates/skills/cbp-frontend-a11y/reference/contrast-visual.md +122 -0
- package/templates/skills/cbp-frontend-a11y/reference/keyboard-patterns.md +154 -0
- package/templates/skills/cbp-frontend-a11y/reference/semantic-html.md +111 -0
- package/templates/skills/cbp-frontend-design/SKILL.md +145 -0
- package/templates/skills/cbp-frontend-design/reference/nextjs-scss.md +118 -0
- package/templates/skills/cbp-frontend-design/reference/rn-expo.md +101 -0
- package/templates/skills/cbp-frontend-design/reference/tauri-react.md +82 -0
- package/templates/skills/cbp-frontend-ui/SKILL.md +262 -0
- package/templates/skills/cbp-frontend-ui/reference/ui-label-maps.md +42 -0
- package/templates/skills/cbp-frontend-ui/reference/ui-layout-patterns.md +105 -0
- package/templates/skills/cbp-frontend-ui/reference/variant-defaults.md +149 -0
- package/templates/skills/cbp-frontend-ux/SKILL.md +181 -0
- package/templates/skills/cbp-git-branch-feat-create/SKILL.md +115 -0
- package/templates/skills/cbp-git-commit/SKILL.md +278 -0
- package/templates/skills/cbp-git-worktree-create/SKILL.md +226 -0
- package/templates/skills/cbp-git-worktree-remove/SKILL.md +145 -0
- package/templates/skills/cbp-merge-main/SKILL.md +228 -0
- package/templates/skills/cbp-round-check/SKILL.md +104 -0
- package/templates/skills/cbp-round-end/SKILL.md +183 -0
- package/templates/skills/cbp-round-end/reference/findings-presentation.md +44 -0
- package/templates/skills/cbp-round-end/reference/inline-fallback.md +35 -0
- package/templates/skills/cbp-round-execute/SKILL.md +211 -0
- package/templates/skills/cbp-round-execute/reference/inline-fallback.md +59 -0
- package/templates/skills/cbp-round-input/SKILL.md +165 -0
- package/templates/skills/cbp-round-start/SKILL.md +222 -0
- package/templates/skills/cbp-round-update/SKILL.md +163 -0
- package/templates/skills/cbp-session-end/SKILL.md +187 -0
- package/templates/skills/cbp-session-start/SKILL.md +155 -0
- package/templates/skills/cbp-ship/SKILL.md +332 -0
- package/templates/skills/cbp-ship/reference/changesets-overview.md +120 -0
- package/templates/skills/cbp-ship/reference/eas-cli-overview.md +60 -0
- package/templates/skills/cbp-ship/reference/gh-cli-overview.md +135 -0
- package/templates/skills/cbp-ship/reference/gh-cli-shipment-commands.md +283 -0
- package/templates/skills/cbp-ship/reference/npm-publish-monorepo.md +252 -0
- package/templates/skills/cbp-ship/reference/npm-publish-oidc-trusted.md +157 -0
- package/templates/skills/cbp-ship/reference/npm-publish-overview.md +171 -0
- package/templates/skills/cbp-ship/reference/preflight-checklist.md +88 -0
- package/templates/skills/cbp-ship/reference/railway-nestjs-deployment.md +169 -0
- package/templates/skills/cbp-ship/reference/railway-overview.md +120 -0
- package/templates/skills/cbp-ship/reference/railway-troubleshooting.md +168 -0
- package/templates/skills/cbp-ship/reference/release-please-overview.md +99 -0
- package/templates/skills/cbp-ship/reference/surface-expo-eas.md +155 -0
- package/templates/skills/cbp-ship/reference/surface-npm.md +180 -0
- package/templates/skills/cbp-ship/reference/surface-railway.md +152 -0
- package/templates/skills/cbp-ship/reference/surface-supabase.md +178 -0
- package/templates/skills/cbp-ship/reference/surface-tauri.md +138 -0
- package/templates/skills/cbp-ship/reference/surface-vercel.md +124 -0
- package/templates/skills/cbp-ship/reference/surface-vscode-ext.md +144 -0
- package/templates/skills/cbp-ship/reference/surfaces.md +60 -0
- package/templates/skills/cbp-ship/reference/testflight-automation.md +215 -0
- package/templates/skills/cbp-ship/reference/testflight-internal-vs-external.md +69 -0
- package/templates/skills/cbp-ship/reference/testflight-overview.md +98 -0
- package/templates/skills/cbp-ship/reference/versioning.md +116 -0
- package/templates/skills/cbp-ship/scripts/detect-surfaces.sh +217 -0
- package/templates/skills/cbp-ship/scripts/verify-expo-eas.sh +35 -0
- package/templates/skills/cbp-ship/scripts/verify-npm.sh +21 -0
- package/templates/skills/cbp-ship/scripts/verify-railway.sh +41 -0
- package/templates/skills/cbp-ship/scripts/verify-supabase.sh +19 -0
- package/templates/skills/cbp-ship/scripts/verify-tauri.sh +24 -0
- package/templates/skills/cbp-ship/scripts/verify-vercel.sh +32 -0
- package/templates/skills/cbp-ship/scripts/verify-vscode-ext.sh +25 -0
- package/templates/skills/cbp-ship/templates/eas.json +66 -0
- package/templates/skills/cbp-ship/templates/railway.toml +15 -0
- package/templates/skills/cbp-ship/templates/release-please-config.json +17 -0
- package/templates/skills/cbp-ship/templates/vercel.json +19 -0
- package/templates/skills/cbp-ship/templates/vscodeignore +21 -0
- package/templates/skills/cbp-ship/templates/workflow-changesets.yml +41 -0
- package/templates/skills/cbp-ship/templates/workflow-eas-submit.yml +53 -0
- package/templates/skills/cbp-ship/templates/workflow-npm-publish.yml +36 -0
- package/templates/skills/cbp-ship/templates/workflow-release-please.yml +21 -0
- package/templates/skills/cbp-ship/templates/workflow-tauri-release.yml +69 -0
- package/templates/skills/cbp-ship/templates/workflow-vsce-publish.yml +31 -0
- package/templates/skills/cbp-ship-configure/SKILL.md +296 -0
- package/templates/skills/cbp-ship-configure/reference/expo-mobile.md +204 -0
- package/templates/skills/cbp-ship-configure/reference/npm-package.md +165 -0
- package/templates/skills/cbp-ship-configure/reference/railway-backend.md +199 -0
- package/templates/skills/cbp-ship-configure/reference/supabase.md +200 -0
- package/templates/skills/cbp-ship-configure/reference/tauri-desktop.md +181 -0
- package/templates/skills/cbp-ship-configure/reference/vercel.md +117 -0
- package/templates/skills/cbp-ship-configure/reference/vscode-ext.md +155 -0
- package/templates/skills/cbp-ship-main/SKILL.md +65 -0
- package/templates/skills/cbp-supabase-branch-check/SKILL.md +337 -0
- package/templates/skills/cbp-supabase-branch-check/reference/dag-steps.md +29 -0
- package/templates/skills/cbp-supabase-migrate/SKILL.md +314 -0
- package/templates/skills/cbp-supabase-migrate/reference/advisor-triage.md +70 -0
- package/templates/skills/cbp-supabase-migrate/reference/cli-fallback.md +87 -0
- package/templates/skills/cbp-supabase-migrate/reference/preflight-dry-run.md +58 -0
- package/templates/skills/cbp-supabase-setup/SKILL.md +239 -0
- package/templates/skills/cbp-supabase-setup/reference/branching-setup.md +121 -0
- package/templates/skills/cbp-supabase-setup/reference/cli-fallback.md +109 -0
- package/templates/skills/cbp-task-check/SKILL.md +166 -0
- package/templates/skills/cbp-task-complete/SKILL.md +206 -0
- package/templates/skills/cbp-task-complete/reference/checkpoint-done-branching.md +48 -0
- package/templates/skills/cbp-task-complete/reference/next-step-heuristic.md +56 -0
- package/templates/skills/cbp-task-create/SKILL.md +167 -0
- package/templates/skills/cbp-task-start/SKILL.md +239 -0
- package/templates/skills/cbp-task-testing/SKILL.md +277 -0
- package/templates/skills/cbp-todo/SKILL.md +97 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: org-shared
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Settings Authoring Conventions
|
|
6
|
+
|
|
7
|
+
Read this before creating or updating `.claude/settings.json` or `.claude/settings.local.json`. This file adds CBP-specific constraints on top of the official Claude Code settings spec.
|
|
8
|
+
|
|
9
|
+
## Two-File Model (CBP Convention)
|
|
10
|
+
|
|
11
|
+
| File | Synced | Committed | Contains |
|
|
12
|
+
| ----------------------------- | --------------------- | --------------- | ------------------------------------------------------------------------------------------- |
|
|
13
|
+
| `.claude/settings.json` | No (git-tracked only) | Yes | Global + repo-merged: hooks, statusLine, `permissions.deny`, `permissions.ask`, attribution |
|
|
14
|
+
| `.claude/settings.local.json` | No | No (gitignored) | Local-only: `permissions.allow` (personal), MCP config, `autoMemoryDirectory` |
|
|
15
|
+
|
|
16
|
+
**Runtime precedence:** Claude Code merges both; `settings.local.json` takes precedence for scalars, and arrays concatenate across scopes.
|
|
17
|
+
|
|
18
|
+
## What Goes Where
|
|
19
|
+
|
|
20
|
+
| Setting | File | Why |
|
|
21
|
+
| --------------------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
|
|
22
|
+
| `hooks` | `settings.json` | Team-shared lifecycle scripts |
|
|
23
|
+
| `permissions.deny` | `settings.json` | Team security baseline — block secrets, destructive ops |
|
|
24
|
+
| `permissions.ask` | `settings.json` | Team-shared confirmation gates |
|
|
25
|
+
| `permissions.allow` | `settings.local.json` | Personal — pre-approved commands for your workflow |
|
|
26
|
+
| `statusLine` | `settings.json` | Team-shared status bar |
|
|
27
|
+
| `attribution.commit` / `attribution.pr` | `settings.json` | Policy (CBP = empty strings, no co-author) |
|
|
28
|
+
| `env` (non-secret) | `settings.json` | Team telemetry, feature flags |
|
|
29
|
+
| `env` (secrets) | Neither — use `.env.local` | Never commit secrets |
|
|
30
|
+
| `mcpServers` | `settings.local.json` | Personal MCP endpoints |
|
|
31
|
+
| `autoMemoryDirectory` | `settings.local.json` or `~/.claude/settings.json` | Runtime **rejects** this key from project settings |
|
|
32
|
+
| `enabledPlugins` | `settings.local.json` | Personal plugin choice |
|
|
33
|
+
|
|
34
|
+
## CBP Policy Defaults
|
|
35
|
+
|
|
36
|
+
These values are part of the CBP baseline and should not be weakened:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"attribution": { "commit": "", "pr": "" },
|
|
41
|
+
"permissions": {
|
|
42
|
+
"defaultMode": "bypassPermissions",
|
|
43
|
+
"deny": ["Bash(rm -rf /:*)", "Bash(rm -rf ~:*)", "Bash(rm -rf /*:*)"],
|
|
44
|
+
"ask": [
|
|
45
|
+
"Bash(git reset:*)",
|
|
46
|
+
"Bash(git clean:*)",
|
|
47
|
+
"Bash(git push --force:*)",
|
|
48
|
+
"Bash(git push -f:*)",
|
|
49
|
+
"Bash(git checkout -- :*)",
|
|
50
|
+
"Bash(git add .:*)",
|
|
51
|
+
"Bash(git add -A:*)",
|
|
52
|
+
"Bash(rm -rf:*)",
|
|
53
|
+
"Bash(pnpm add:*)",
|
|
54
|
+
"Bash(pnpm install:*)",
|
|
55
|
+
"Bash(npm install:*)",
|
|
56
|
+
"Bash(npm i:*)",
|
|
57
|
+
"Bash(npx add:*)"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
| Rule | Reason |
|
|
64
|
+
| ----------------------------------------------------------- | -------------------------------------------------- |
|
|
65
|
+
| `attribution.commit` = `""` | No Claude / AI mention in commits (CBP git policy) |
|
|
66
|
+
| `permissions.deny` covers `rm -rf` of root paths | Catastrophic blast radius |
|
|
67
|
+
| `permissions.ask` covers destructive git + package installs | Requires explicit user approval |
|
|
68
|
+
|
|
69
|
+
## File Authority
|
|
70
|
+
|
|
71
|
+
`settings.json` is git-tracked and local to the repo. Direct edits are the authoritative change — commit changes you want to keep.
|
|
72
|
+
|
|
73
|
+
`settings.local.json` is never committed. It's yours.
|
|
74
|
+
|
|
75
|
+
## Required `$schema` Line
|
|
76
|
+
|
|
77
|
+
Always include:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{ "$schema": "https://json.schemastore.org/claude-code-settings.json", ... }
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Enables editor autocomplete + validation. The published schema lags the CLI, so a warning on a new field is not necessarily invalid.
|
|
84
|
+
|
|
85
|
+
## When to Use Which Scope
|
|
86
|
+
|
|
87
|
+
| Goal | Scope |
|
|
88
|
+
| --------------------------------------- | ---------------------------------------------- |
|
|
89
|
+
| Add a team-shared pre-commit hook | `settings.json` |
|
|
90
|
+
| Block a new dangerous Bash pattern | `settings.json` (`permissions.deny`) |
|
|
91
|
+
| Pre-approve a command you run often | `settings.local.json` (`permissions.allow`) |
|
|
92
|
+
| Point auto-memory at a custom directory | `settings.local.json` (project-scope rejected) |
|
|
93
|
+
| Enable personal plugin | `settings.local.json` |
|
|
94
|
+
| Add MCP server endpoint | `settings.local.json` |
|
|
95
|
+
|
|
96
|
+
## Common Mistakes
|
|
97
|
+
|
|
98
|
+
| Mistake | Fix |
|
|
99
|
+
| ------------------------------------------------------ | -------------------------------------------------- |
|
|
100
|
+
| Putting `autoMemoryDirectory` in `settings.json` | Runtime rejects it — move to `settings.local.json` |
|
|
101
|
+
| Personal `permissions.allow` in `settings.json` | Team doesn't want your personal allowlist |
|
|
102
|
+
| Committing secrets in `env` | Use `.env.local` instead |
|
|
103
|
+
| Weakening CBP defaults (removing deny rules) | Don't — get team sign-off first |
|
|
104
|
+
| Adding hooks without `scope:` header in the `.sh` file | Hook file needs `# @scope: org-shared` comment |
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Permission Rule Syntax
|
|
2
|
+
|
|
3
|
+
Source: official Claude Code settings and permissions specs.
|
|
4
|
+
|
|
5
|
+
## Form
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Tool # matches all uses of the tool
|
|
9
|
+
Tool(specifier) # matches uses matching the specifier
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Evaluated in order: **deny → ask → allow**. First matching rule wins.
|
|
13
|
+
|
|
14
|
+
## Quick reference
|
|
15
|
+
|
|
16
|
+
| Rule | Effect |
|
|
17
|
+
|------|--------|
|
|
18
|
+
| `Bash` | All Bash commands |
|
|
19
|
+
| `Bash(npm run *)` | Commands starting with `npm run` |
|
|
20
|
+
| `Bash(git push *)` | Commands starting with `git push` |
|
|
21
|
+
| `Read` | All file reads |
|
|
22
|
+
| `Read(./.env)` | Read of `.env` in project root |
|
|
23
|
+
| `Read(./.env.*)` | Any `.env.*` file |
|
|
24
|
+
| `Read(./secrets/**)` | Anything under `./secrets/` |
|
|
25
|
+
| `Edit(./build/**)` | Writes under `./build/` |
|
|
26
|
+
| `WebFetch` | All web fetches |
|
|
27
|
+
| `WebFetch(domain:example.com)` | Fetches to example.com |
|
|
28
|
+
| `Agent(Explore)` | Spawning the Explore subagent |
|
|
29
|
+
| `Skill(commit)` | Invoking the commit skill (exact match) |
|
|
30
|
+
| `Skill(review-pr *)` | Invoking review-pr with any args |
|
|
31
|
+
|
|
32
|
+
## Path conventions
|
|
33
|
+
|
|
34
|
+
For `Read(...)` and `Edit(...)` specifiers:
|
|
35
|
+
|
|
36
|
+
| Prefix | Meaning |
|
|
37
|
+
|--------|---------|
|
|
38
|
+
| `./` or no prefix | Project-relative (relative to working dir) |
|
|
39
|
+
| `//` | Absolute path |
|
|
40
|
+
| `~/` | Home directory |
|
|
41
|
+
| `**` | Recursive glob |
|
|
42
|
+
| `*` | Single-segment wildcard |
|
|
43
|
+
|
|
44
|
+
⚠️ Sandbox filesystem paths use *different* conventions — there, `/path` is absolute. See the sandbox section of the Claude Code settings spec.
|
|
45
|
+
|
|
46
|
+
## Bash specificity
|
|
47
|
+
|
|
48
|
+
`Bash(foo *)` matches commands starting with `foo `. It is **not** a full shell parser — it's prefix matching after expansion of `*`. So:
|
|
49
|
+
|
|
50
|
+
- `Bash(git diff *)` matches `git diff HEAD` but not `git diff HEAD` (double space)
|
|
51
|
+
- Users can bypass loose patterns with command substitution. Don't rely on Bash patterns for security; use `deny` for hard blocks
|
|
52
|
+
|
|
53
|
+
## Array merging
|
|
54
|
+
|
|
55
|
+
`allow`, `ask`, `deny` **merge across scopes** (concatenate + dedupe). Managed + user + project + local all contribute. You cannot remove a higher-scope entry by leaving it off at a lower scope.
|
|
56
|
+
|
|
57
|
+
## Deny wins
|
|
58
|
+
|
|
59
|
+
- `deny` > `ask` > `allow`
|
|
60
|
+
- Managed `deny` cannot be weakened by lower scopes
|
|
61
|
+
- Use `deny` for secrets regardless of what any other scope says
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Scope Precedence & Merging
|
|
2
|
+
|
|
3
|
+
Source: official Claude Code settings spec — *Settings precedence*.
|
|
4
|
+
|
|
5
|
+
## Priority order (highest first)
|
|
6
|
+
|
|
7
|
+
1. **Managed** (server-managed > MDM/OS > file-based > HKCU)
|
|
8
|
+
2. **Command-line flags** (`--permission-mode`, etc.)
|
|
9
|
+
3. **Local project** — `.claude/settings.local.json`
|
|
10
|
+
4. **Shared project** — `.claude/settings.json`
|
|
11
|
+
5. **User** — `~/.claude/settings.json`
|
|
12
|
+
|
|
13
|
+
## Scalars vs arrays
|
|
14
|
+
|
|
15
|
+
### Scalars (higher scope WINS outright)
|
|
16
|
+
|
|
17
|
+
| Example | Effect |
|
|
18
|
+
|---------|--------|
|
|
19
|
+
| `model` | Managed value replaces user value |
|
|
20
|
+
| `defaultMode` | Highest scope wins, no merge |
|
|
21
|
+
| `autoUpdatesChannel` | Highest scope wins |
|
|
22
|
+
| `language` | Highest scope wins |
|
|
23
|
+
|
|
24
|
+
### Arrays (MERGE: concatenate + dedupe)
|
|
25
|
+
|
|
26
|
+
| Example | Effect |
|
|
27
|
+
|---------|--------|
|
|
28
|
+
| `permissions.allow` / `ask` / `deny` | All scopes contribute |
|
|
29
|
+
| `sandbox.filesystem.allowWrite` / `denyWrite` / `denyRead` | All scopes merge |
|
|
30
|
+
| `sandbox.network.allowedDomains` / `deniedDomains` | All scopes merge |
|
|
31
|
+
| `allowedHttpHookUrls` | All scopes merge |
|
|
32
|
+
| `httpHookAllowedEnvVars` | All scopes merge |
|
|
33
|
+
| `claudeMdExcludes` | All scopes merge |
|
|
34
|
+
| `companyAnnouncements` | All scopes merge |
|
|
35
|
+
| `additionalDirectories` | All scopes merge |
|
|
36
|
+
|
|
37
|
+
You cannot *remove* an array entry from a higher scope by omitting it lower.
|
|
38
|
+
|
|
39
|
+
## Managed-only keys
|
|
40
|
+
|
|
41
|
+
Some keys are read **only** from managed settings — set in any other scope, they're ignored:
|
|
42
|
+
|
|
43
|
+
- `allowManagedHooksOnly`
|
|
44
|
+
- `allowManagedMcpServersOnly`
|
|
45
|
+
- `allowManagedPermissionRulesOnly`
|
|
46
|
+
- `allowedChannelPlugins`
|
|
47
|
+
- `channelsEnabled`
|
|
48
|
+
- `blockedMarketplaces`, `strictKnownMarketplaces`
|
|
49
|
+
- `forceRemoteSettingsRefresh`
|
|
50
|
+
- `pluginTrustMessage`
|
|
51
|
+
|
|
52
|
+
## Project-forbidden keys
|
|
53
|
+
|
|
54
|
+
Some keys are ignored when placed in `.claude/settings.json` (team-shared) to prevent shared repos from doing hostile things:
|
|
55
|
+
|
|
56
|
+
- `autoMemoryDirectory` — shared repo cannot redirect memory writes
|
|
57
|
+
- `autoMode` — shared repo cannot reshape the auto-mode classifier
|
|
58
|
+
- `useAutoModeDuringPlan` — not read from shared project settings
|
|
59
|
+
- `skipDangerousModePermissionPrompt` — shared repo cannot auto-bypass
|
|
60
|
+
|
|
61
|
+
These work from user, local, or managed scope only.
|
|
62
|
+
|
|
63
|
+
## Verify active settings
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
/status # inside a Claude Code session
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Shows each active layer, its origin (file / plist / registry / remote), and flags file-parse errors.
|
|
70
|
+
|
|
71
|
+
## Backups
|
|
72
|
+
|
|
73
|
+
Claude Code auto-backs-up settings files on change, keeping the last 5 versions.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# settings.json Field Reference
|
|
2
|
+
|
|
3
|
+
Source: official Claude Code settings spec. Grouped by category. All fields are optional.
|
|
4
|
+
|
|
5
|
+
## Permissions & modes
|
|
6
|
+
|
|
7
|
+
| Key | Purpose |
|
|
8
|
+
|-----|---------|
|
|
9
|
+
| `permissions.allow` | Pre-approve tool rules |
|
|
10
|
+
| `permissions.ask` | Force confirmation for these rules |
|
|
11
|
+
| `permissions.deny` | Block these rules outright |
|
|
12
|
+
| `permissions.additionalDirectories` | Extra dirs Claude may touch (no config discovery) |
|
|
13
|
+
| `permissions.defaultMode` | Default permission mode at session start |
|
|
14
|
+
| `disableBypassPermissionsMode` | `"disable"` to prevent `--dangerously-skip-permissions` |
|
|
15
|
+
| `skipDangerousModePermissionPrompt` | Skip the bypass confirmation |
|
|
16
|
+
|
|
17
|
+
## Hooks
|
|
18
|
+
|
|
19
|
+
| Key | Purpose |
|
|
20
|
+
|-----|---------|
|
|
21
|
+
| `hooks` | Event → matcher → command mappings |
|
|
22
|
+
| `disableAllHooks` | Kill switch |
|
|
23
|
+
| `allowedHttpHookUrls` | URL allowlist for HTTP hooks |
|
|
24
|
+
| `httpHookAllowedEnvVars` | Env var allowlist HTTP hooks may interpolate |
|
|
25
|
+
| `allowManagedHooksOnly` | Managed-only: only managed/SDK/managed-plugin hooks run |
|
|
26
|
+
|
|
27
|
+
## Sandbox (mac/linux/WSL2)
|
|
28
|
+
|
|
29
|
+
| Key | Purpose |
|
|
30
|
+
|-----|---------|
|
|
31
|
+
| `sandbox.enabled` | Turn on sandboxing |
|
|
32
|
+
| `sandbox.failIfUnavailable` | Exit rather than degrade |
|
|
33
|
+
| `sandbox.autoAllowBashIfSandboxed` | Auto-approve Bash when sandboxed |
|
|
34
|
+
| `sandbox.excludedCommands` | Run these outside the sandbox |
|
|
35
|
+
| `sandbox.allowUnsandboxedCommands` | Allow the `dangerouslyDisableSandbox` escape hatch |
|
|
36
|
+
| `sandbox.filesystem.allowWrite` / `denyWrite` / `allowRead` / `denyRead` | Path controls |
|
|
37
|
+
| `sandbox.network.allowedDomains` / `deniedDomains` | Domain allow/deny |
|
|
38
|
+
| `sandbox.network.allowLocalBinding` | Listen on localhost |
|
|
39
|
+
| `sandbox.network.allowUnixSockets` / `allowAllUnixSockets` | Socket policy |
|
|
40
|
+
| `sandbox.network.httpProxyPort` / `socksProxyPort` | BYO proxy ports |
|
|
41
|
+
|
|
42
|
+
## Attribution
|
|
43
|
+
|
|
44
|
+
| Key | Purpose |
|
|
45
|
+
|-----|---------|
|
|
46
|
+
| `attribution.commit` | Commit trailer (empty string hides) |
|
|
47
|
+
| `attribution.pr` | PR body attribution (empty string hides) |
|
|
48
|
+
|
|
49
|
+
## Env & models
|
|
50
|
+
|
|
51
|
+
| Key | Purpose |
|
|
52
|
+
|-----|---------|
|
|
53
|
+
| `env` | Per-session environment variables |
|
|
54
|
+
| `model` | Override default model |
|
|
55
|
+
| `modelOverrides` | Map model IDs (e.g. Bedrock profile ARNs) |
|
|
56
|
+
| `availableModels` | Restrict which models `/model` exposes |
|
|
57
|
+
| `effortLevel` | Persist effort across sessions |
|
|
58
|
+
| `alwaysThinkingEnabled` | Extended thinking on by default |
|
|
59
|
+
| `showThinkingSummaries` | Show thinking summaries |
|
|
60
|
+
|
|
61
|
+
## Memory & rules
|
|
62
|
+
|
|
63
|
+
| Key | Purpose |
|
|
64
|
+
|-----|---------|
|
|
65
|
+
| `autoMemoryEnabled` | Toggle auto memory |
|
|
66
|
+
| `autoMemoryDirectory` | Custom auto-memory path (user/local/policy only) |
|
|
67
|
+
| `claudeMdExcludes` | Glob excludes for CLAUDE.md files |
|
|
68
|
+
|
|
69
|
+
## Plugins
|
|
70
|
+
|
|
71
|
+
| Key | Purpose |
|
|
72
|
+
|-----|---------|
|
|
73
|
+
| `enabledPlugins` | `{"plugin@marketplace": true/false}` |
|
|
74
|
+
| `extraKnownMarketplaces` | Extra marketplace sources |
|
|
75
|
+
| `strictKnownMarketplaces` | Managed-only allowlist |
|
|
76
|
+
| `blockedMarketplaces` | Managed-only blocklist |
|
|
77
|
+
| `pluginTrustMessage` | Managed-only trust message |
|
|
78
|
+
|
|
79
|
+
## MCP
|
|
80
|
+
|
|
81
|
+
| Key | Purpose |
|
|
82
|
+
|-----|---------|
|
|
83
|
+
| `enableAllProjectMcpServers` | Auto-approve `.mcp.json` servers |
|
|
84
|
+
| `enabledMcpjsonServers` / `disabledMcpjsonServers` | Explicit MCP control |
|
|
85
|
+
| `allowedMcpServers` / `deniedMcpServers` / `allowManagedMcpServersOnly` | Managed-only MCP gating |
|
|
86
|
+
|
|
87
|
+
## Channels (Team/Enterprise)
|
|
88
|
+
|
|
89
|
+
| Key | Purpose |
|
|
90
|
+
|-----|---------|
|
|
91
|
+
| `channelsEnabled` | Managed-only switch |
|
|
92
|
+
| `allowedChannelPlugins` | Managed-only allowlist |
|
|
93
|
+
|
|
94
|
+
## UI / UX
|
|
95
|
+
|
|
96
|
+
| Key | Purpose |
|
|
97
|
+
|-----|---------|
|
|
98
|
+
| `statusLine` | Custom status line command |
|
|
99
|
+
| `tui` | `"fullscreen"` or `"default"` |
|
|
100
|
+
| `viewMode` | Default transcript view |
|
|
101
|
+
| `spinnerTipsEnabled` / `spinnerTipsOverride` / `spinnerVerbs` | Spinner look |
|
|
102
|
+
| `language` | Preferred response language |
|
|
103
|
+
| `prefersReducedMotion` | Reduce animations |
|
|
104
|
+
| `companyAnnouncements` | Startup banner strings |
|
|
105
|
+
|
|
106
|
+
## Updates & versions
|
|
107
|
+
|
|
108
|
+
| Key | Purpose |
|
|
109
|
+
|-----|---------|
|
|
110
|
+
| `autoUpdatesChannel` | `"stable"` or `"latest"` |
|
|
111
|
+
| `minimumVersion` | Floor for updates |
|
|
112
|
+
|
|
113
|
+
## Fast mode / background tasks
|
|
114
|
+
|
|
115
|
+
| Key | Purpose |
|
|
116
|
+
|-----|---------|
|
|
117
|
+
| `fastModePerSessionOptIn` | Require opt-in per session |
|
|
118
|
+
| `useAutoModeDuringPlan` | Auto mode during plan mode |
|
|
119
|
+
| `disableAutoMode` | Kill auto mode entirely |
|
|
120
|
+
|
|
121
|
+
## Sessions & persistence
|
|
122
|
+
|
|
123
|
+
| Key | Purpose |
|
|
124
|
+
|-----|---------|
|
|
125
|
+
| `cleanupPeriodDays` | Transcript TTL |
|
|
126
|
+
| `feedbackSurveyRate` | Quality survey probability |
|
|
127
|
+
| `awaySummaryEnabled` | Away-return session recap |
|
|
128
|
+
|
|
129
|
+
## Worktrees (monorepo)
|
|
130
|
+
|
|
131
|
+
| Key | Purpose |
|
|
132
|
+
|-----|---------|
|
|
133
|
+
| `worktree.symlinkDirectories` | Dirs to symlink (e.g. `node_modules`) |
|
|
134
|
+
| `worktree.sparsePaths` | Sparse-checkout paths |
|
|
135
|
+
|
|
136
|
+
## Auth & login
|
|
137
|
+
|
|
138
|
+
| Key | Purpose |
|
|
139
|
+
|-----|---------|
|
|
140
|
+
| `apiKeyHelper` | Script generating API key |
|
|
141
|
+
| `forceLoginMethod` | `"claudeai"` or `"console"` |
|
|
142
|
+
| `forceLoginOrgUUID` | Organization lock |
|
|
143
|
+
| `awsAuthRefresh` / `awsCredentialExport` | Bedrock helpers |
|
|
144
|
+
|
|
145
|
+
## File suggestion
|
|
146
|
+
|
|
147
|
+
| Key | Purpose |
|
|
148
|
+
|-----|---------|
|
|
149
|
+
| `fileSuggestion` | Custom `@` autocomplete command |
|
|
150
|
+
| `respectGitignore` | `@` picker respects `.gitignore` |
|
|
151
|
+
|
|
152
|
+
## Miscellaneous
|
|
153
|
+
|
|
154
|
+
| Key | Purpose |
|
|
155
|
+
|-----|---------|
|
|
156
|
+
| `agent` | Run main thread as a named subagent |
|
|
157
|
+
| `outputStyle` | Custom output style |
|
|
158
|
+
| `plansDirectory` | Where plans live |
|
|
159
|
+
| `defaultShell` | `"bash"` or `"powershell"` |
|
|
160
|
+
| `disableSkillShellExecution` | Block `!`-command injection |
|
|
161
|
+
| `skipWebFetchPreflight` | Skip WebFetch safety check |
|
|
162
|
+
| `includeGitInstructions` | Include built-in git instructions |
|
|
163
|
+
| `voiceEnabled` | Enable push-to-talk dictation |
|
|
164
|
+
| `sshConfigs` | Desktop SSH connections |
|
|
165
|
+
| `otelHeadersHelper` | Dynamic OTel headers |
|
|
166
|
+
| `disableDeepLinkRegistration` | Block `claude-cli://` protocol handler |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
3
|
+
"permissions": {
|
|
4
|
+
"allow": [
|
|
5
|
+
"Bash(git status *)",
|
|
6
|
+
"Bash(git diff *)",
|
|
7
|
+
"Bash(git log *)"
|
|
8
|
+
],
|
|
9
|
+
"deny": [
|
|
10
|
+
"WebFetch",
|
|
11
|
+
"Bash(curl *)",
|
|
12
|
+
"Read(./.env)",
|
|
13
|
+
"Read(./.env.*)",
|
|
14
|
+
"Read(./secrets/**)"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"env": {},
|
|
18
|
+
"hooks": {},
|
|
19
|
+
"attribution": {
|
|
20
|
+
"commit": "",
|
|
21
|
+
"pr": ""
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: org-shared
|
|
3
|
+
name: cbp-build-cc-skill
|
|
4
|
+
description: Build a Claude Code skill at .claude/skills/{name}/SKILL.md following the official skills spec — frontmatter, supporting files (templates, examples, reference, scripts), invocation control, argument substitution, dynamic context, fork-to-subagent, allowed-tools.
|
|
5
|
+
argument-hint: "[skill-name] [--scope=project|user] [--fork] [--disable-model-invocation]"
|
|
6
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash(mkdir *), Bash(chmod *)
|
|
7
|
+
effort: xhigh
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Build Claude Code Skill
|
|
11
|
+
|
|
12
|
+
Create a Claude Code skill following the official Claude Code skills spec. Uses every feature the runtime supports: frontmatter, supporting files, argument substitution, dynamic context injection, forked subagent execution, pre-approved tools.
|
|
13
|
+
|
|
14
|
+
**CBP authoring quality** (one-responsibility discipline, pipeline clarity, approval gates, auto-trigger vs wait, command follow-up format; hook warns at 300 lines, blocks at 600): read [reference/cbp-quality.md](reference/cbp-quality.md) before writing.
|
|
15
|
+
|
|
16
|
+
## Arguments
|
|
17
|
+
|
|
18
|
+
`$ARGUMENTS` — skill name (kebab-case, required). Flags: `--scope=project|user` (default `project`), `--fork` (add `context: fork`), `--disable-model-invocation` (manual-only).
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
- You keep pasting the same playbook/checklist into chat
|
|
23
|
+
- A section of CLAUDE.md has grown into a procedure rather than a fact
|
|
24
|
+
- You want a reusable workflow accessible via `/skill-name`
|
|
25
|
+
- You need a step-by-step task that can accept arguments
|
|
26
|
+
|
|
27
|
+
**Skills vs subagents vs CLAUDE.md** (per official docs):
|
|
28
|
+
|
|
29
|
+
| Mechanism | Runs in | Loads when | Use for |
|
|
30
|
+
| --------- | ------------------------ | --------------------------- | ---------------------------------------- |
|
|
31
|
+
| CLAUDE.md | main context | every session | Facts Claude needs every conversation |
|
|
32
|
+
| Skill | main context (or forked) | on invocation or auto-match | Reusable workflows and prompts |
|
|
33
|
+
| Subagent | isolated context | on delegation | Self-contained tasks with verbose output |
|
|
34
|
+
|
|
35
|
+
## Instructions
|
|
36
|
+
|
|
37
|
+
### Step 1 — Validate inputs
|
|
38
|
+
|
|
39
|
+
- Name is kebab-case, max 64 chars, lowercase + digits + hyphens only
|
|
40
|
+
- Reject collisions with bundled skills (`/simplify`, `/batch`, `/debug`, `/loop`, `/claude-api`, `/init`, `/review`, `/security-review`)
|
|
41
|
+
- Reject if the skill directory already exists unless the user asked to update
|
|
42
|
+
|
|
43
|
+
### Step 2 — Pick scope
|
|
44
|
+
|
|
45
|
+
| Scope | Path | Available to |
|
|
46
|
+
| ------- | ---------------------------------- | ----------------- |
|
|
47
|
+
| project | `.claude/skills/{name}/SKILL.md` | This project only |
|
|
48
|
+
| user | `~/.claude/skills/{name}/SKILL.md` | All your projects |
|
|
49
|
+
|
|
50
|
+
Default: `project`. Higher priorities (enterprise/personal/project/plugin) are documented for reference but this skill only writes project or user.
|
|
51
|
+
|
|
52
|
+
### Step 3 — Create the directory structure
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
{scope-path}/{name}/
|
|
56
|
+
├── SKILL.md # Required. Main instructions
|
|
57
|
+
├── templates/ # Optional. Copy-and-fill templates
|
|
58
|
+
├── examples/ # Optional. Reference examples
|
|
59
|
+
├── reference/ # Optional. Detailed docs — loaded only when linked
|
|
60
|
+
└── scripts/ # Optional. Executable helpers
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Only create subfolders you'll actually fill. Reference each supporting file from `SKILL.md` using relative paths so Claude knows when to load it.
|
|
64
|
+
|
|
65
|
+
### Step 4 — Classify the skill
|
|
66
|
+
|
|
67
|
+
Pick the pattern that fits. This drives frontmatter choices:
|
|
68
|
+
|
|
69
|
+
| Pattern | Description | Frontmatter |
|
|
70
|
+
| ----------- | ------------------------------------------ | ----------------------------------------------------------------------- |
|
|
71
|
+
| Reference | Conventions/patterns Claude applies inline | plain `name` + `description` |
|
|
72
|
+
| Task | Step-by-step action with side effects | add `disable-model-invocation: true` |
|
|
73
|
+
| Knowledge | Background context, not actionable | add `user-invocable: false` |
|
|
74
|
+
| Forked | Runs in a subagent for isolation | add `context: fork` + `agent: Explore\|Plan\|general-purpose\|<custom>` |
|
|
75
|
+
| Path-scoped | Only loads when matching files are in play | add `paths: ["glob/**"]` |
|
|
76
|
+
|
|
77
|
+
Concrete templates: [examples/task-skill.md](examples/task-skill.md), [examples/knowledge-skill.md](examples/knowledge-skill.md), [examples/fork-skill.md](examples/fork-skill.md), [examples/dynamic-context.md](examples/dynamic-context.md).
|
|
78
|
+
|
|
79
|
+
### Step 5 — Fill the frontmatter
|
|
80
|
+
|
|
81
|
+
Read `${CLAUDE_SKILL_DIR}/templates/skill.md` as the canonical frontmatter. Fill only the fields you need — every field except `description` is optional, and even `description` falls back to the first markdown paragraph.
|
|
82
|
+
|
|
83
|
+
Full field table: [reference/frontmatter-fields.md](reference/frontmatter-fields.md).
|
|
84
|
+
|
|
85
|
+
Key fields by use case:
|
|
86
|
+
|
|
87
|
+
| Use case | Fields |
|
|
88
|
+
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
89
|
+
| Manual-only workflow | `disable-model-invocation: true` |
|
|
90
|
+
| Hide from `/` menu | `user-invocable: false` |
|
|
91
|
+
| Pre-approve tools | `allowed-tools: Bash(git add *) Bash(git commit *)` |
|
|
92
|
+
| Accept arguments | `argument-hint: [file] [mode]`, optionally `arguments: [file mode]` for named `$file`/`$mode` |
|
|
93
|
+
| Set model/effort (always required for plugin skills) | `model: sonnet`, `effort: xhigh` — defaults for plugin skills. Lower (`haiku`/`low` or Opus/`high`) only as a documented exception per [/cbp-build-cc-mode](../build-cc-mode/SKILL.md). `model: inherit` is NOT permitted |
|
|
94
|
+
| Path-scoped auto-load | `paths: ["src/api/**/*.ts"]` |
|
|
95
|
+
| Fork to subagent | `context: fork`, `agent: Explore` |
|
|
96
|
+
|
|
97
|
+
### Step 6 — Write the body
|
|
98
|
+
|
|
99
|
+
Structure the markdown body:
|
|
100
|
+
|
|
101
|
+
1. **Title + one-line purpose**
|
|
102
|
+
2. **Numbered instructions** — concrete, verifiable steps
|
|
103
|
+
3. **Argument substitution** if the skill takes input (see [reference/string-substitutions.md](reference/string-substitutions.md))
|
|
104
|
+
4. **Dynamic context blocks** — see [examples/dynamic-context.md](examples/dynamic-context.md) for both inline and fenced shell-substitution syntax. Disabled globally when settings.json sets `disableSkillShellExecution: true`.
|
|
105
|
+
5. **Additional resources** section linking to supporting files
|
|
106
|
+
|
|
107
|
+
Keep `SKILL.md` under 500 lines. Push detailed reference to `reference/*.md` and load on demand.
|
|
108
|
+
|
|
109
|
+
> Note for skill authors: do NOT write the literal bang-backtick or triple-backtick-bang trigger sequences inside prose in your own SKILL.md body — the runtime parses them as shell substitutions during invocation. When documenting the feature, link to an example file (as this skill does) rather than spelling the trigger inline.
|
|
110
|
+
|
|
111
|
+
### Step 7 — Add supporting files
|
|
112
|
+
|
|
113
|
+
Reference every supporting file from `SKILL.md` so Claude knows when to read it:
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
## Additional resources
|
|
117
|
+
|
|
118
|
+
- Fill the template at [templates/skill.md](templates/skill.md)
|
|
119
|
+
- See [examples/task-skill.md](examples/task-skill.md) for a side-effecting workflow
|
|
120
|
+
- Frontmatter reference: [reference/frontmatter-fields.md](reference/frontmatter-fields.md)
|
|
121
|
+
- Run `bash "${CLAUDE_SKILL_DIR}/scripts/do-work.sh"` for the bundled helper
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Scripts are executed, not loaded into context — use them for heavy lifting.
|
|
125
|
+
|
|
126
|
+
### Step 8 — Validate
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
bash "${CLAUDE_SKILL_DIR}/scripts/validate-skill.sh" "{scope-path}/{name}/SKILL.md"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Checks: name matches directory, frontmatter parses, no invalid fields, arg-hint syntax.
|
|
133
|
+
|
|
134
|
+
### Step 9 — Test
|
|
135
|
+
|
|
136
|
+
- Live change detection picks up edits within the current session
|
|
137
|
+
- Invoke directly: `/{name}` (if `user-invocable` is not `false`)
|
|
138
|
+
- Ask Claude a question matching the `description` to test auto-invocation
|
|
139
|
+
- Use `/doctor` or `/context` to confirm the skill is discovered
|
|
140
|
+
|
|
141
|
+
## Integration
|
|
142
|
+
|
|
143
|
+
- **Triggered by**: user invocation
|
|
144
|
+
- **Reads**: `${CLAUDE_SKILL_DIR}/templates/*.md`, `${CLAUDE_SKILL_DIR}/reference/*.md`
|
|
145
|
+
- **Writes**: `.claude/skills/{name}/**/*` or `~/.claude/skills/{name}/**/*`
|
|
146
|
+
- **Related skills**: `/cbp-build-cc-agent` (forked execution target), `/cbp-build-cc-rule` (for always-loaded constraints), `/cbp-build-cc-settings` (for `disableSkillShellExecution` and permissions on `Skill(name)`), `/cbp-build-cc-mode` (canonical model/effort matrix — audit or apply)
|
|
147
|
+
|
|
148
|
+
## Key Rules
|
|
149
|
+
|
|
150
|
+
- Rendered `SKILL.md` content enters the conversation once when invoked and stays until compaction — write standing instructions, not one-time steps
|
|
151
|
+
- Preloaded subagent skills cannot have `disable-model-invocation: true`
|
|
152
|
+
- `context: fork` is only meaningful when the skill body contains an actionable task; otherwise the subagent receives guidelines with no prompt
|
|
153
|
+
- Descriptions front-load key use case: `description` + `when_to_use` cap at 1,536 chars in the skill listing
|
|
154
|
+
- `paths:` scoping applies when Claude reads files matching the globs, not on every tool use
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-summary
|
|
3
|
+
description: Summarize changes in the current pull request
|
|
4
|
+
context: fork
|
|
5
|
+
agent: Explore
|
|
6
|
+
allowed-tools: Bash(gh *)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Pull request context
|
|
10
|
+
|
|
11
|
+
- PR metadata: !`gh pr view --json title,body,author,labels`
|
|
12
|
+
- PR diff: !`gh pr diff`
|
|
13
|
+
- Changed files: !`gh pr diff --name-only`
|
|
14
|
+
- PR comments: !`gh pr view --comments`
|
|
15
|
+
|
|
16
|
+
## Environment
|
|
17
|
+
|
|
18
|
+
```!
|
|
19
|
+
node --version
|
|
20
|
+
pnpm --version
|
|
21
|
+
git rev-parse --abbrev-ref HEAD
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Your task
|
|
25
|
+
|
|
26
|
+
Using the context above, produce a one-page PR summary:
|
|
27
|
+
|
|
28
|
+
1. **What changed** — 2-3 bullets
|
|
29
|
+
2. **Why it changed** — inferred from PR body and commits
|
|
30
|
+
3. **Risk areas** — files touched that affect shared infrastructure
|
|
31
|
+
4. **Suggested reviewers** — based on CODEOWNERS and recent blame
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-research
|
|
3
|
+
description: Research a topic thoroughly using the Explore agent, without polluting the main conversation with search results.
|
|
4
|
+
context: fork
|
|
5
|
+
agent: Explore
|
|
6
|
+
argument-hint: [topic]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Research $ARGUMENTS thoroughly:
|
|
10
|
+
|
|
11
|
+
1. Find relevant files using Glob and Grep
|
|
12
|
+
2. Read and analyze the code
|
|
13
|
+
3. Look for related tests, docs, and configuration
|
|
14
|
+
4. Summarize findings with specific file:line references
|
|
15
|
+
|
|
16
|
+
Return:
|
|
17
|
+
|
|
18
|
+
- **Summary** — one paragraph
|
|
19
|
+
- **Key files** — list of paths with purpose
|
|
20
|
+
- **Entry points** — where the code is called from
|
|
21
|
+
- **Related tests** — paths to existing coverage
|
|
22
|
+
- **Open questions** — ambiguities worth raising with the user
|