@jeiemgi/cckit 0.1.6

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.
Files changed (191) hide show
  1. package/.claude-plugin/plugin.json +22 -0
  2. package/AGENTS.md +101 -0
  3. package/LICENSE-APACHE +202 -0
  4. package/LICENSE-MIT +21 -0
  5. package/README.md +143 -0
  6. package/SECURITY.md +22 -0
  7. package/bin/cckit +215 -0
  8. package/cckit.config.json +34 -0
  9. package/commands/kit-add.md +42 -0
  10. package/commands/kit-docs.md +45 -0
  11. package/commands/kit-doctor.md +52 -0
  12. package/commands/kit-export-project.md +58 -0
  13. package/commands/kit-export-training.md +49 -0
  14. package/commands/kit-init.md +126 -0
  15. package/commands/kit-routines.md +59 -0
  16. package/commands/kit-update.md +132 -0
  17. package/docs/kit-annotate/01-explainer.html +225 -0
  18. package/docs/kit-annotate/02-implementation-plan.html +196 -0
  19. package/docs/media/.onboarding-capture.cast +5 -0
  20. package/docs/media/README.md +43 -0
  21. package/docs/media/build-demo.sh +63 -0
  22. package/docs/media/build-kit-init.sh +51 -0
  23. package/docs/media/build-onboarding.sh +51 -0
  24. package/docs/media/kit-dry-run.cast +107 -0
  25. package/docs/media/kit-dry-run.gif +0 -0
  26. package/docs/media/kit-init.cast +56 -0
  27. package/docs/media/kit-init.gif +0 -0
  28. package/docs/media/kit-onboarding.cast +148 -0
  29. package/docs/media/kit-onboarding.gif +0 -0
  30. package/githooks/pre-commit +18 -0
  31. package/kit.config.schema.json +105 -0
  32. package/package.json +54 -0
  33. package/privacy-denylist.example +8 -0
  34. package/profiles/automation.json +36 -0
  35. package/profiles/content.json +41 -0
  36. package/profiles/minimal.json +31 -0
  37. package/profiles/research.json +37 -0
  38. package/profiles/software.json +32 -0
  39. package/scripts/annotate-setup.sh +149 -0
  40. package/scripts/autopilot.sh +50 -0
  41. package/scripts/capture-project-ids.sh +53 -0
  42. package/scripts/check.sh +66 -0
  43. package/scripts/contribute.sh +48 -0
  44. package/scripts/debug.sh +54 -0
  45. package/scripts/init-upgrade-test.sh +99 -0
  46. package/scripts/init.sh +827 -0
  47. package/scripts/install.sh +24 -0
  48. package/scripts/kit-add-test.sh +62 -0
  49. package/scripts/kit-add.sh +115 -0
  50. package/scripts/kit-adopt-test.sh +61 -0
  51. package/scripts/kit-adopt.sh +122 -0
  52. package/scripts/kit-bump-version.sh +79 -0
  53. package/scripts/kit-digest.sh +126 -0
  54. package/scripts/kit-doctor.sh +663 -0
  55. package/scripts/kit-export-project-test.sh +82 -0
  56. package/scripts/kit-export-project.sh +245 -0
  57. package/scripts/kit-export-training-test.sh +51 -0
  58. package/scripts/kit-export-training.sh +175 -0
  59. package/scripts/kit-migrate-test.sh +80 -0
  60. package/scripts/kit-migrate.sh +190 -0
  61. package/scripts/kit-onboard-test.sh +63 -0
  62. package/scripts/kit-onboard.sh +69 -0
  63. package/scripts/kit-promote-test.sh +54 -0
  64. package/scripts/kit-promote.sh +102 -0
  65. package/scripts/kit-remove-test.sh +61 -0
  66. package/scripts/kit-remove.sh +84 -0
  67. package/scripts/kit-routines.sh +322 -0
  68. package/scripts/kit-version-check.sh +91 -0
  69. package/scripts/kit-wire-test.sh +54 -0
  70. package/scripts/kit-wire.sh +132 -0
  71. package/scripts/knowledge-lint.sh +96 -0
  72. package/scripts/lib/cckit-output.sh +36 -0
  73. package/scripts/lib/effort-metrics.sh +452 -0
  74. package/scripts/lib/effort-ops-test.sh +83 -0
  75. package/scripts/lib/effort-ops.sh +132 -0
  76. package/scripts/lib/effort-plan.sh +104 -0
  77. package/scripts/lib/effort.sh +191 -0
  78. package/scripts/lib/engine-adapter.sh +92 -0
  79. package/scripts/lib/gh-log.sh +58 -0
  80. package/scripts/lib/gh-project.sh +212 -0
  81. package/scripts/lib/handoff.sh +35 -0
  82. package/scripts/lib/kit-cli-test.sh +42 -0
  83. package/scripts/lib/kit-cli.sh +32 -0
  84. package/scripts/lib/kit-config-resolve.sh +145 -0
  85. package/scripts/lib/kit-config.sh +88 -0
  86. package/scripts/lib/kit-engine-test.sh +107 -0
  87. package/scripts/lib/kit-events.sh +62 -0
  88. package/scripts/lib/kit-gc.sh +117 -0
  89. package/scripts/lib/kit-interview-test.sh +77 -0
  90. package/scripts/lib/kit-interview.sh +203 -0
  91. package/scripts/lib/kit-local.sh +79 -0
  92. package/scripts/lib/kit-manifest.sh +127 -0
  93. package/scripts/lib/kit-mode-test.sh +49 -0
  94. package/scripts/lib/kit-mode.sh +67 -0
  95. package/scripts/lib/kit-operate.sh +105 -0
  96. package/scripts/lib/kit-profile-test.sh +62 -0
  97. package/scripts/lib/kit-profile.sh +115 -0
  98. package/scripts/lib/kit-task-ops-test.sh +63 -0
  99. package/scripts/lib/kit-task-ops.sh +341 -0
  100. package/scripts/lib/pr-evidence.sh +173 -0
  101. package/scripts/lib/project-scan.sh +16 -0
  102. package/scripts/lib/react-detect.sh +78 -0
  103. package/scripts/lib/role-identity.sh +47 -0
  104. package/scripts/lib/secret-guard.sh +96 -0
  105. package/scripts/lib/toon.sh +35 -0
  106. package/scripts/lib/ui.sh +42 -0
  107. package/scripts/lib/version-bump.sh +59 -0
  108. package/scripts/lib/worktree-issue-test.sh +45 -0
  109. package/scripts/lib/worktree-issue.sh +73 -0
  110. package/scripts/lib/worktree-start.sh +280 -0
  111. package/scripts/orchestrate.sh +160 -0
  112. package/scripts/portable-test.sh +53 -0
  113. package/scripts/publish.sh +94 -0
  114. package/scripts/setup-labels.sh +25 -0
  115. package/scripts/setup-milestones.sh +17 -0
  116. package/scripts/showcase.sh +64 -0
  117. package/scripts/status.sh +44 -0
  118. package/scripts/task-sync.sh +59 -0
  119. package/scripts/test.sh +48 -0
  120. package/scripts/web-install.sh +22 -0
  121. package/skills/kit-annotate/SKILL.md +107 -0
  122. package/skills/kit-autopilot/SKILL.md +108 -0
  123. package/skills/kit-contribute/SKILL.md +134 -0
  124. package/skills/kit-customize/SKILL.md +134 -0
  125. package/skills/kit-dev/SKILL.md +67 -0
  126. package/skills/kit-digest/SKILL.md +41 -0
  127. package/skills/kit-effort-close/SKILL.md +156 -0
  128. package/skills/kit-effort-new/SKILL.md +173 -0
  129. package/skills/kit-effort-pr/SKILL.md +139 -0
  130. package/skills/kit-effort-start/SKILL.md +85 -0
  131. package/skills/kit-gc/SKILL.md +80 -0
  132. package/skills/kit-onboard/SKILL.md +50 -0
  133. package/skills/kit-security-sweep/SKILL.md +57 -0
  134. package/skills/kit-ship/SKILL.md +43 -0
  135. package/skills/kit-task-close/SKILL.md +66 -0
  136. package/skills/kit-task-new/SKILL.md +51 -0
  137. package/skills/kit-task-pr/SKILL.md +43 -0
  138. package/skills/kit-task-pr-auto/SKILL.md +27 -0
  139. package/skills/kit-task-pr-merge/SKILL.md +53 -0
  140. package/skills/kit-task-start/SKILL.md +76 -0
  141. package/skills/kit-task-sync/SKILL.md +37 -0
  142. package/templates/CLAUDE.md.tmpl +106 -0
  143. package/templates/agents/analyst.md +55 -0
  144. package/templates/agents/auto-dev.md +93 -0
  145. package/templates/agents/backend.md +59 -0
  146. package/templates/agents/designer.md +73 -0
  147. package/templates/agents/devops.md +57 -0
  148. package/templates/agents/editor.md +48 -0
  149. package/templates/agents/frontend.md +81 -0
  150. package/templates/agents/generalist.md +46 -0
  151. package/templates/agents/local-delegate.md +70 -0
  152. package/templates/agents/n8n.md +65 -0
  153. package/templates/agents/pm.md +69 -0
  154. package/templates/agents/qa.md +66 -0
  155. package/templates/agents/researcher.md +57 -0
  156. package/templates/agents/security.md +65 -0
  157. package/templates/agents/tech-lead.md +75 -0
  158. package/templates/hooks/guard-base-branch-commit.sh.tmpl +45 -0
  159. package/templates/hooks/kit-local-status.sh.tmpl +34 -0
  160. package/templates/hooks/kit_version_check.sh.tmpl +6 -0
  161. package/templates/hooks/mempal_followup.sh.tmpl +97 -0
  162. package/templates/hooks/mempal_precompact.sh.tmpl +4 -0
  163. package/templates/hooks/mempal_save.sh.tmpl +4 -0
  164. package/templates/hooks/mempal_session_start.sh.tmpl +8 -0
  165. package/templates/hooks/prepush_gate.sh.tmpl +36 -0
  166. package/templates/hooks/repo-hygiene.sh.tmpl +72 -0
  167. package/templates/kit.config.json.tmpl +32 -0
  168. package/templates/knowledge-INDEX.md.tmpl +12 -0
  169. package/templates/lib/kit-sigil.sh.tmpl +124 -0
  170. package/templates/rules/branch-naming.md +104 -0
  171. package/templates/rules/communication-style.md +22 -0
  172. package/templates/rules/delegation-brief.md +40 -0
  173. package/templates/rules/design-routing.md +35 -0
  174. package/templates/rules/effort-model.md +122 -0
  175. package/templates/rules/knowledge-base.md +41 -0
  176. package/templates/rules/mempalace.md +110 -0
  177. package/templates/rules/plan-output-format.md +58 -0
  178. package/templates/rules/react-annotate.md +69 -0
  179. package/templates/rules/risk-tiered-review.md +62 -0
  180. package/templates/rules/skill-gaps.md +48 -0
  181. package/templates/rules/task-management.md +42 -0
  182. package/templates/settings/settings.local.json.tmpl +27 -0
  183. package/templates/skills/NAMESPACED +13 -0
  184. package/templates/skills/copywriting/SKILL.md +252 -0
  185. package/templates/skills/copywriting/references/copy-frameworks.md +344 -0
  186. package/templates/skills/copywriting/references/natural-transitions.md +272 -0
  187. package/templates/skills/feature-build-refine/SKILL.md +367 -0
  188. package/templates/skills/karpathy-guidelines/SKILL.md +69 -0
  189. package/templates/skills/morning-briefing/SKILL.md +46 -0
  190. package/templates/skills/speckit/SKILL.md +239 -0
  191. package/templates/skills/supabase-patterns/SKILL.md +88 -0
@@ -0,0 +1,148 @@
1
+ {"version":2,"width":98,"height":38,"env":{"TERM":"xterm-256color","SHELL":"/bin/zsh"}}
2
+ [0.00, "o", "\u001b[1;36m➜ claude-kit\u001b[0m "]
3
+ [0.40, "o", "c"]
4
+ [0.44, "o", "l"]
5
+ [0.47, "o", "a"]
6
+ [0.51, "o", "u"]
7
+ [0.55, "o", "d"]
8
+ [0.59, "o", "e"]
9
+ [0.62, "o", " "]
10
+ [0.66, "o", "-"]
11
+ [0.70, "o", "p"]
12
+ [0.73, "o", " "]
13
+ [0.77, "o", "'"]
14
+ [0.81, "o", "r"]
15
+ [0.85, "o", "u"]
16
+ [0.89, "o", "n"]
17
+ [0.93, "o", " "]
18
+ [0.97, "o", "i"]
19
+ [1.00, "o", "n"]
20
+ [1.03, "o", "i"]
21
+ [1.06, "o", "t"]
22
+ [1.09, "o", "."]
23
+ [1.12, "o", "s"]
24
+ [1.16, "o", "h"]
25
+ [1.19, "o", " "]
26
+ [1.22, "o", "-"]
27
+ [1.25, "o", "-"]
28
+ [1.28, "o", "p"]
29
+ [1.31, "o", "r"]
30
+ [1.34, "o", "o"]
31
+ [1.38, "o", "f"]
32
+ [1.41, "o", "i"]
33
+ [1.44, "o", "l"]
34
+ [1.47, "o", "e"]
35
+ [1.50, "o", " "]
36
+ [1.53, "o", "a"]
37
+ [1.56, "o", "u"]
38
+ [1.59, "o", "t"]
39
+ [1.62, "o", "o"]
40
+ [1.66, "o", "m"]
41
+ [1.69, "o", "a"]
42
+ [1.72, "o", "t"]
43
+ [1.75, "o", "i"]
44
+ [1.78, "o", "o"]
45
+ [1.81, "o", "n"]
46
+ [1.84, "o", " "]
47
+ [1.88, "o", "-"]
48
+ [1.91, "o", "-"]
49
+ [1.94, "o", "n"]
50
+ [1.97, "o", "a"]
51
+ [2.00, "o", "m"]
52
+ [2.04, "o", "e"]
53
+ [2.08, "o", " "]
54
+ [2.12, "o", "\""]
55
+ [2.16, "o", "A"]
56
+ [2.20, "o", "c"]
57
+ [2.24, "o", "m"]
58
+ [2.28, "o", "e"]
59
+ [2.31, "o", " "]
60
+ [2.35, "o", "B"]
61
+ [2.39, "o", "o"]
62
+ [2.43, "o", "t"]
63
+ [2.47, "o", "\""]
64
+ [2.51, "o", " "]
65
+ [2.54, "o", "-"]
66
+ [2.58, "o", "-"]
67
+ [2.62, "o", "m"]
68
+ [2.66, "o", "e"]
69
+ [2.70, "o", "m"]
70
+ [2.74, "o", "o"]
71
+ [2.78, "o", "r"]
72
+ [2.81, "o", "y"]
73
+ [2.85, "o", " "]
74
+ [2.89, "o", "o"]
75
+ [2.93, "o", "n"]
76
+ [2.97, "o", " "]
77
+ [3.01, "o", "-"]
78
+ [3.04, "o", "-"]
79
+ [3.08, "o", "d"]
80
+ [3.12, "o", "r"]
81
+ [3.16, "o", "y"]
82
+ [3.20, "o", "-"]
83
+ [3.24, "o", "r"]
84
+ [3.28, "o", "u"]
85
+ [3.31, "o", "n"]
86
+ [3.35, "o", " "]
87
+ [3.39, "o", "a"]
88
+ [3.43, "o", "n"]
89
+ [3.47, "o", "d"]
90
+ [3.51, "o", " "]
91
+ [3.54, "o", "s"]
92
+ [3.58, "o", "h"]
93
+ [3.62, "o", "o"]
94
+ [3.66, "o", "w"]
95
+ [3.70, "o", " "]
96
+ [3.74, "o", "t"]
97
+ [3.78, "o", "h"]
98
+ [3.81, "o", "e"]
99
+ [3.85, "o", " "]
100
+ [3.89, "o", "o"]
101
+ [3.93, "o", "u"]
102
+ [3.97, "o", "t"]
103
+ [4.00, "o", "p"]
104
+ [4.04, "o", "u"]
105
+ [4.08, "o", "t"]
106
+ [4.12, "o", "'"]
107
+ [4.16, "o", "\r\n"]
108
+ [4.51, "o", "\u001b[90m✳ Working…\u001b[0m"]
109
+ [5.71, "o", "\r\u001b[K"]
110
+ [5.91, "o", "Here's the raw output of the command:\r\n"]
111
+ [5.96, "o", "\r\n"]
112
+ [6.01, "o", "→ DRY RUN — nothing will be written. Plan for /var/folders/9m/bx78tc212xd_08yq3phm8sjr0000gn/T/tmp.BDfMtWiTgB:\r\n"]
113
+ [6.06, "o", "\r\n"]
114
+ [6.11, "o", " Profile : automation\r\n"]
115
+ [6.16, "o", " Project : Acme Bot (tmp-bdfmtwitgb)\r\n"]
116
+ [6.21, "o", " Repo : acme/bot\r\n"]
117
+ [6.26, "o", " Board : off (gh issues only)\r\n"]
118
+ [6.31, "o", " Memory : true Plans: markdown Lang: English\r\n"]
119
+ [6.36, "o", " Spec Kit: false Pre-push gate: false\r\n"]
120
+ [6.41, "o", "\r\n"]
121
+ [6.46, "o", " Would write:\r\n"]
122
+ [6.51, "o", " CLAUDE.md\r\n"]
123
+ [6.56, "o", " .claude/kit.config.json\r\n"]
124
+ [6.61, "o", " .claude/settings.local.json\r\n"]
125
+ [6.66, "o", " .claude/rules/communication-style.md\r\n"]
126
+ [6.71, "o", " .claude/rules/task-management.md\r\n"]
127
+ [6.76, "o", " .claude/rules/plan-output-format.md\r\n"]
128
+ [6.81, "o", " .claude/rules/mempalace.md\r\n"]
129
+ [6.86, "o", " .claude/agents/pm/AGENT.md\r\n"]
130
+ [6.91, "o", " .claude/agents/n8n/AGENT.md\r\n"]
131
+ [6.96, "o", " .claude/agents/generalist/AGENT.md\r\n"]
132
+ [7.01, "o", " .claude/skills/task-new/SKILL.md\r\n"]
133
+ [7.06, "o", " .claude/skills/task-start/SKILL.md\r\n"]
134
+ [7.11, "o", " .claude/skills/task-pr/SKILL.md\r\n"]
135
+ [7.16, "o", " .claude/skills/task-pr-merge/SKILL.md\r\n"]
136
+ [7.21, "o", " .claude/skills/task-sync/SKILL.md\r\n"]
137
+ [7.26, "o", " .claude/skills/task-close/SKILL.md\r\n"]
138
+ [7.31, "o", " .claude/skills/morning-briefing/SKILL.md\r\n"]
139
+ [7.36, "o", " .claude\r\n"]
140
+ [7.41, "o", "/skills/karpathy-guidelines/SKILL.md\r\n"]
141
+ [7.46, "o", " scripts/ (kit-config.sh, gh-project.sh, setup-labels.sh, setup-milestones.sh, capture-project-ids.sh, task-sync.sh)\r\n"]
142
+ [7.51, "o", " .claude/hooks/mempal_session_start.sh + mempal_save.sh + mempal_precompact.sh (SessionStart / Stop / PreCompact)\r\n"]
143
+ [7.56, "o", "\r\n"]
144
+ [7.61, "o", " Onboarding would offer (opt-in): gh auth · MemPalace (mempalace-mcp) · gws (if you use Google Workspace)\r\n"]
145
+ [7.66, "o", "\r\n"]
146
+ [7.71, "o", "Re-run without --dry-run to write these files.\r\n"]
147
+ [8.26, "o", "\u001b[1;36m➜ claude-kit\u001b[0m "]
148
+ [10.06, "o", " "]
Binary file
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bash
2
+ # cckit pre-commit — block secrets / keys / env / private data before they enter history.
3
+ # Agnostic: ships with cckit, works in any repo. Wire it: git config core.hooksPath githooks
4
+ set -uo pipefail
5
+ root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
6
+ guard="$root/scripts/lib/secret-guard.sh"
7
+ [ -f "$guard" ] || guard="$(dirname "$0")/../scripts/lib/secret-guard.sh"
8
+ # shellcheck source=/dev/null
9
+ . "$guard" 2>/dev/null || { echo "cckit pre-commit: secret-guard not found, skipping" >&2; exit 0; }
10
+ staged=()
11
+ while IFS= read -r line; do staged+=("$line"); done < <(git diff --cached --name-only --diff-filter=ACM 2>/dev/null)
12
+ [ "${#staged[@]}" -eq 0 ] && exit 0
13
+ if ! secret_guard_scan "${staged[@]}"; then
14
+ echo "cckit pre-commit: commit blocked by secret-guard. Fix the findings above," >&2
15
+ echo "or (if a true false positive) bypass once by re-committing with the --no-verify flag." >&2
16
+ exit 1
17
+ fi
18
+ exit 0
@@ -0,0 +1,105 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/tuempresadigital/claude-kit/kit.config.schema.json",
4
+ "title": "claude-kit project config (v2)",
5
+ "description": "Identity layer of a kit project. Resolved in cascade workspace -> project -> island by scripts/lib/kit-config-resolve.sh; the nearest layer wins. The $schema reference in kit.config.json points here so editors validate + autocomplete.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "properties": {
9
+ "$schema": { "type": "string" },
10
+ "kitVersion": {
11
+ "type": "string",
12
+ "description": "Kit version that last wrote/wired this config. Drives self-heal: when it differs from the installed plugin, kit-wire re-converges."
13
+ },
14
+ "mode": {
15
+ "type": "string",
16
+ "enum": ["draft", "guided", "enforced"],
17
+ "default": "guided",
18
+ "description": "How strict the kit is HERE. draft = guardrails off (explore freely); guided = warnings, never block; enforced = guardrails block (worktree-only, PR-per-issue). Set per cascade level — an island can be enforced while its parent workspace is guided."
19
+ },
20
+ "workspace": {
21
+ "type": "object",
22
+ "description": "Present only in kit.workspace.json (the workspace-root marker). Holds settings shared across every project under the workspace.",
23
+ "additionalProperties": true,
24
+ "properties": {
25
+ "name": { "type": "string" },
26
+ "commons": {
27
+ "type": "string",
28
+ "description": "Path (relative to the workspace root) of the promoted skills/agents commons. Default .claude/."
29
+ }
30
+ }
31
+ },
32
+ "project": {
33
+ "type": "object",
34
+ "additionalProperties": true,
35
+ "properties": {
36
+ "name": { "type": "string" },
37
+ "slug": { "type": "string" },
38
+ "owner": { "type": "string" },
39
+ "language": { "type": "string", "description": "Comms language, e.g. en, es, mixed." },
40
+ "path": { "type": "string" }
41
+ }
42
+ },
43
+ "profile": { "type": "string", "description": "Active role profile (minimal, software, content, research, automation, ...)." },
44
+ "skillPrefix": { "type": "string", "description": "Namespace prepended to kit-namespaced workflow skills on scaffold/upgrade (e.g. \"kit-\" -> kit-task-close). Empty = bare names. See templates/skills/NAMESPACED." },
45
+ "modules": {
46
+ "type": "array",
47
+ "items": { "type": "string" },
48
+ "description": "Stackable modules added on top of the profile (e.g. \"software\"). Empty/absent = base project."
49
+ },
50
+ "roles": { "type": "array", "items": { "type": "string" } },
51
+ "github": {
52
+ "type": "object",
53
+ "additionalProperties": true,
54
+ "properties": {
55
+ "repo": { "type": "string" },
56
+ "owner": { "type": "string" },
57
+ "baseBranch": { "type": "string", "description": "Integration branch the lifecycle skills branch from and merge into (default: main; e.g. develop)." },
58
+ "projectsV2": { "type": "boolean" },
59
+ "projectNumber": { "type": ["integer", "null"] },
60
+ "projectTitle": { "type": ["string", "null"] }
61
+ }
62
+ },
63
+ "milestones": { "type": "array", "items": { "type": "string" } },
64
+ "plans": {
65
+ "type": "object",
66
+ "additionalProperties": true,
67
+ "properties": {
68
+ "format": { "type": "string", "description": "none | markdown | mdx" },
69
+ "dir": { "type": "string" }
70
+ }
71
+ },
72
+ "memory": {
73
+ "type": "object",
74
+ "additionalProperties": true,
75
+ "properties": {
76
+ "enabled": { "type": "boolean" },
77
+ "provider": { "type": "string" },
78
+ "wing": { "type": "string" },
79
+ "claudeProjectSlug": { "type": "string" }
80
+ }
81
+ },
82
+ "routines": {
83
+ "type": "array",
84
+ "description": "Opt-in scheduled routines accepted by the user (briefing, board sweep, gc, ...). The kit SUGGESTS; the user accepts; nothing is created without opt-in.",
85
+ "items": { "type": "string" }
86
+ },
87
+ "upgrade": {
88
+ "type": "object",
89
+ "additionalProperties": true,
90
+ "description": "Tells `init.sh --upgrade` which scaffolded paths the project deleted/renamed ON PURPOSE so they are never re-added (#334). Paths are repo-relative (e.g. \".claude/skills/task-new\"); a directory entry covers everything beneath it.",
91
+ "properties": {
92
+ "removed": {
93
+ "type": "array",
94
+ "items": { "type": "string" },
95
+ "description": "Scaffolded paths the project deleted on purpose — the upgrade will not re-create them."
96
+ },
97
+ "renamed": {
98
+ "type": "object",
99
+ "additionalProperties": { "type": "string" },
100
+ "description": "Map of original scaffolded path -> the project's new name. The original (key) is treated as removed (never re-added); the value documents where it went."
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@jeiemgi/cckit",
3
+ "version": "0.1.6",
4
+ "private": false,
5
+ "license": "MIT OR Apache-2.0",
6
+ "description": "cckit — a project operating system for coding agents (CLI + Claude Code plugin).",
7
+ "homepage": "https://cckit.vercel.app",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/jeiemgi/cckit.git"
11
+ },
12
+ "bin": {
13
+ "cckit": "bin/cckit"
14
+ },
15
+ "files": [
16
+ ".claude-plugin",
17
+ "bin",
18
+ "scripts",
19
+ "commands",
20
+ "skills",
21
+ "profiles",
22
+ "templates",
23
+ "docs",
24
+ "githooks",
25
+ "cckit.config.json",
26
+ "kit.config.schema.json",
27
+ "privacy-denylist.example",
28
+ "AGENTS.md",
29
+ "SECURITY.md",
30
+ "LICENSE-MIT",
31
+ "LICENSE-APACHE"
32
+ ],
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "keywords": [
37
+ "agents",
38
+ "claude-code",
39
+ "cli",
40
+ "github",
41
+ "workflow",
42
+ "worktree",
43
+ "orchestration",
44
+ "bash",
45
+ "developer-tools"
46
+ ],
47
+ "author": "jeiemgi",
48
+ "bugs": {
49
+ "url": "https://github.com/jeiemgi/cckit/issues"
50
+ },
51
+ "engines": {
52
+ "bash": ">=4"
53
+ }
54
+ }
@@ -0,0 +1,8 @@
1
+ # cckit privacy denylist — terms that must NEVER appear in anything cckit publishes.
2
+ # Copy to .cckit/privacy-denylist (gitignored) and add YOUR private terms, one per line.
3
+ # The guard fails the commit/gate if any term is found in a tracked file. Examples of what to add:
4
+ # your-company.com
5
+ # your-org-name
6
+ # you@example.com
7
+ # internal-host.example
8
+ # cckit ships this list EMPTY by design — it is agnostic; you declare what is yours.
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "automation",
3
+ "label": "Automation / n8n",
4
+ "description": "Workflow-automation org: a product manager, an n8n automation specialist, and a generalist.",
5
+ "agents": [
6
+ "pm",
7
+ "n8n",
8
+ "generalist"
9
+ ],
10
+ "skills": [
11
+ "morning-briefing",
12
+ "karpathy-guidelines"
13
+ ],
14
+ "rules": [
15
+ "branch-naming",
16
+ "communication-style",
17
+ "knowledge-base",
18
+ "mempalace",
19
+ "plan-output-format",
20
+ "task-management"
21
+ ],
22
+ "roles": [
23
+ "PM",
24
+ "Automation",
25
+ "Generalist"
26
+ ],
27
+ "milestones": [
28
+ "Backlog",
29
+ "Building",
30
+ "Live"
31
+ ],
32
+ "defaults": {
33
+ "plans_format": "markdown",
34
+ "memory": "off"
35
+ }
36
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "content",
3
+ "label": "Content / editorial",
4
+ "description": "Writing, publishing, and brand work: planning, editing, design, and research.",
5
+ "agents": [
6
+ "pm",
7
+ "editor",
8
+ "designer",
9
+ "researcher"
10
+ ],
11
+ "skills": [
12
+ "morning-briefing",
13
+ "copywriting",
14
+ "karpathy-guidelines"
15
+ ],
16
+ "rules": [
17
+ "branch-naming",
18
+ "communication-style",
19
+ "design-routing",
20
+ "knowledge-base",
21
+ "mempalace",
22
+ "plan-output-format",
23
+ "task-management"
24
+ ],
25
+ "roles": [
26
+ "PM",
27
+ "Editor",
28
+ "Designer",
29
+ "Researcher"
30
+ ],
31
+ "milestones": [
32
+ "Outline",
33
+ "Draft",
34
+ "Review",
35
+ "Publish"
36
+ ],
37
+ "defaults": {
38
+ "plans_format": "markdown",
39
+ "memory": "off"
40
+ }
41
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "minimal",
3
+ "label": "Minimal",
4
+ "description": "Lean setup: a project manager plus a generalist that flexes to any task.",
5
+ "agents": [
6
+ "pm",
7
+ "generalist"
8
+ ],
9
+ "skills": [
10
+ "karpathy-guidelines"
11
+ ],
12
+ "rules": [
13
+ "communication-style",
14
+ "task-management",
15
+ "mempalace",
16
+ "branch-naming"
17
+ ],
18
+ "roles": [
19
+ "PM",
20
+ "Generalist"
21
+ ],
22
+ "milestones": [
23
+ "Backlog",
24
+ "Doing",
25
+ "Done"
26
+ ],
27
+ "defaults": {
28
+ "plans_format": "none",
29
+ "memory": "off"
30
+ }
31
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "research",
3
+ "label": "Research / analysis",
4
+ "description": "Investigation and synthesis: planning, primary research, and data analysis.",
5
+ "agents": [
6
+ "pm",
7
+ "researcher",
8
+ "analyst"
9
+ ],
10
+ "skills": [
11
+ "morning-briefing",
12
+ "karpathy-guidelines"
13
+ ],
14
+ "rules": [
15
+ "branch-naming",
16
+ "communication-style",
17
+ "knowledge-base",
18
+ "mempalace",
19
+ "plan-output-format",
20
+ "task-management"
21
+ ],
22
+ "roles": [
23
+ "PM",
24
+ "Researcher",
25
+ "Analyst"
26
+ ],
27
+ "milestones": [
28
+ "Scope",
29
+ "Gather",
30
+ "Analyze",
31
+ "Report"
32
+ ],
33
+ "defaults": {
34
+ "plans_format": "markdown",
35
+ "memory": "off"
36
+ }
37
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "software",
3
+ "label": "Software product",
4
+ "description": "Full engineering org: product, architecture, design, infra, backend, frontend, QA, security.",
5
+ "agents": ["pm", "tech-lead", "designer", "devops", "backend", "frontend", "qa", "security"],
6
+ "skills": [
7
+ "morning-briefing",
8
+ "speckit",
9
+ "feature-build-refine",
10
+ "supabase-patterns",
11
+ "karpathy-guidelines"
12
+ ],
13
+ "rules": [
14
+ "branch-naming",
15
+ "communication-style",
16
+ "design-routing",
17
+ "knowledge-base",
18
+ "mempalace",
19
+ "plan-output-format",
20
+ "effort-model",
21
+ "delegation-brief",
22
+ "skill-gaps",
23
+ "task-management"
24
+ ],
25
+ "roles": ["PM", "Tech Lead", "Designer", "DevOps", "Backend", "Frontend", "QA", "Security"],
26
+ "milestones": ["Foundation", "MVP", "Beta", "GA"],
27
+ "defaults": {
28
+ "plans_format": "markdown",
29
+ "memory": "off",
30
+ "speckit": "off"
31
+ }
32
+ }
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env bash
2
+ # claude-kit — wire Agentation (in-app visual UI annotation) into a React project, for Claude Code.
3
+ # Installs the third-party `agentation` dev dependency, registers the `agentation-mcp` MCP server
4
+ # for Claude, writes the react-annotate rule, and records the choice in .claude/kit.config.json.
5
+ # It PRINTS the dev-only provider snippet to add to the app entry — the /kit-annotate skill applies
6
+ # that source edit with your confirmation (layouts vary too much for a safe blind sed).
7
+ #
8
+ # Agentation is PolyForm Shield 1.0.0, source-available. This installs it as YOUR project's own dev
9
+ # dependency (npm fetches it at your direction); the kit vendors none of its code.
10
+ #
11
+ # Usage: scripts/annotate-setup.sh [--target DIR] [--framework next|vite|react-router] [--dry-run]
12
+ set -euo pipefail
13
+
14
+ KIT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
15
+ command -v jq >/dev/null 2>&1 || { echo "✗ jq is required." >&2; exit 1; }
16
+ command -v perl >/dev/null 2>&1 || { echo "✗ perl is required." >&2; exit 1; }
17
+
18
+ TARGET="$PWD"; FRAMEWORK_OVERRIDE=""; DRY_RUN=0
19
+ while [[ $# -gt 0 ]]; do
20
+ case "$1" in
21
+ --target) TARGET="$2"; shift 2 ;;
22
+ --framework) FRAMEWORK_OVERRIDE="$2"; shift 2 ;;
23
+ --dry-run) DRY_RUN=1; shift ;;
24
+ -h|--help) sed -n '2,12p' "$0"; exit 0 ;;
25
+ *) echo "✗ unknown flag: $1" >&2; exit 1 ;;
26
+ esac
27
+ done
28
+ TARGET="$(cd "$TARGET" && pwd)"
29
+
30
+ # shellcheck source=/dev/null
31
+ source "$KIT_ROOT/scripts/lib/react-detect.sh"
32
+ react_detect "$TARGET"
33
+ [[ -n "$FRAMEWORK_OVERRIDE" ]] && REACT_FRAMEWORK="$FRAMEWORK_OVERRIDE"
34
+
35
+ if [[ "$REACT_DETECTED" != "true" ]]; then
36
+ echo "✗ No React app detected in $TARGET (no 'react' in package.json)." >&2
37
+ echo " /kit-annotate targets React apps (Next.js, Vite, React Router). Skipping." >&2
38
+ exit 2
39
+ fi
40
+
41
+ CFG="$TARGET/.claude/kit.config.json"
42
+ WING=""; MEMORY_BOOL="false"; PROJECT_NAME="$(basename "$TARGET")"; HTTP_PORT=4747
43
+ if [[ -f "$CFG" ]]; then
44
+ WING="$(jq -r '.memory.wing // .project.slug // ""' "$CFG" 2>/dev/null || echo "")"
45
+ MEMORY_BOOL="$(jq -r '.memory.enabled // false' "$CFG" 2>/dev/null || echo false)"
46
+ PROJECT_NAME="$(jq -r '.project.name // ""' "$CFG" 2>/dev/null || echo "$PROJECT_NAME")"
47
+ HTTP_PORT="$(jq -r '.annotate.mcp.httpPort // 4747' "$CFG" 2>/dev/null || echo 4747)"
48
+ fi
49
+ [[ -z "$WING" || "$WING" == "null" ]] && WING="$(basename "$TARGET" | tr '[:upper:]' '[:lower:]')"
50
+ [[ -z "$HTTP_PORT" || "$HTTP_PORT" == "null" ]] && HTTP_PORT=4747
51
+
52
+ case "$REACT_PKG_MANAGER" in
53
+ pnpm) INSTALL_CMD="pnpm add -D agentation" ;;
54
+ yarn) INSTALL_CMD="yarn add -D agentation" ;;
55
+ bun) INSTALL_CMD="bun add -d agentation" ;;
56
+ *) INSTALL_CMD="npm install -D agentation" ;;
57
+ esac
58
+ MCP_ADD_CMD='claude mcp add agentation -- npx -y agentation-mcp server'
59
+ ENDPOINT="http://localhost:${HTTP_PORT}"
60
+
61
+ # Dev gate differs by framework: Next reads NODE_ENV; Vite/RR (Vite-based) use import.meta.env.DEV.
62
+ case "$REACT_FRAMEWORK" in
63
+ next) GATE='process.env.NODE_ENV === "development"' ;;
64
+ *) GATE='import.meta.env.DEV' ;;
65
+ esac
66
+ # The `endpoint` prop is REQUIRED. Without it the toolbar boots `disconnected`, writes only to the
67
+ # browser's localStorage, and annotations never reach the MCP receiver on :$HTTP_PORT — so Claude
68
+ # sees 0 sessions even while the user is annotating (the bug behind issue #157). Wire it everywhere.
69
+ SNIPPET="import { Agentation } from \"agentation\";
70
+ // …then, inside your root component's returned JSX, alongside the app:
71
+ { ${GATE} && <Agentation endpoint=\"${ENDPOINT}\" /> }"
72
+
73
+ emit_rule() { # resolve <!-- IF:FLAG --> blocks + {{VARS}} exactly like scripts/init.sh
74
+ local src="$1" dest="$2"
75
+ mkdir -p "$(dirname "$dest")"
76
+ KIT_FLAGS_ON="$([[ "$MEMORY_BOOL" == "true" ]] && echo MEMORY || true)" \
77
+ WING="$WING" PROJECT_NAME="$PROJECT_NAME" \
78
+ perl -0777 -pe '
79
+ my %on = map { $_=>1 } grep { length } split /,/, ($ENV{KIT_FLAGS_ON}//"");
80
+ 1 while s{<!-- IF:(\w+) -->(.*?)<!-- /IF:\1 -->}{ $on{$1} ? $2 : "" }gse;
81
+ s/\{\{(\w+)\}\}/ exists $ENV{$1} ? $ENV{$1} : "{{$1}}" /ge;
82
+ ' "$src" > "$dest"
83
+ }
84
+
85
+ if [[ $DRY_RUN -eq 1 ]]; then
86
+ echo "→ DRY RUN — /kit-annotate setup plan for $TARGET"
87
+ echo ""
88
+ echo " React : yes (v${REACT_VERSION:-?})"
89
+ echo " Framework : $REACT_FRAMEWORK"
90
+ echo " Entry file : ${REACT_ENTRY_FILE:-"(not auto-found — the skill will ask)"}"
91
+ echo " Pkg manager : $REACT_PKG_MANAGER"
92
+ echo " Memory/wing : $MEMORY_BOOL / $WING"
93
+ echo ""
94
+ echo " Would:"
95
+ echo " 1. $INSTALL_CMD"
96
+ echo " 2. $MCP_ADD_CMD"
97
+ echo " # Agentation's MCP: HTTP :4747 (browser toolbar → store) + MCP stdio (→ Claude)"
98
+ echo " 3. write .claude/rules/react-annotate.md (memory block: $MEMORY_BOOL)"
99
+ echo " 4. merge .annotate into .claude/kit.config.json"
100
+ echo " 5. (skill applies, with your OK) wire the dev-only toolbar into ${REACT_ENTRY_FILE:-<entry>}:"
101
+ printf '%s\n' "$SNIPPET" | sed 's/^/ /'
102
+ echo ""
103
+ echo "Re-run without --dry-run to apply steps 1–4."
104
+ exit 0
105
+ fi
106
+
107
+ echo "→ Installing agentation (dev dependency, $REACT_PKG_MANAGER)…"
108
+ ( cd "$TARGET" && eval "$INSTALL_CMD" )
109
+
110
+ if claude mcp list 2>/dev/null | grep -qi 'agentation'; then
111
+ echo " ✓ agentation MCP already registered for Claude"
112
+ else
113
+ echo "→ Registering the agentation MCP for Claude…"
114
+ ( cd "$TARGET" && eval "$MCP_ADD_CMD" ) \
115
+ || echo " ⚠ could not auto-register — run it yourself: $MCP_ADD_CMD"
116
+ fi
117
+
118
+ emit_rule "$KIT_ROOT/templates/rules/react-annotate.md" "$TARGET/.claude/rules/react-annotate.md"
119
+ echo " ✓ .claude/rules/react-annotate.md"
120
+
121
+ if [[ -f "$CFG" ]]; then
122
+ tmp="$(mktemp)"
123
+ jq --arg fw "$REACT_FRAMEWORK" --arg ver "$REACT_VERSION" --arg entry "$REACT_ENTRY_FILE" \
124
+ --argjson port "$HTTP_PORT" \
125
+ '.annotate = {
126
+ enabled: true,
127
+ backend: "agentation",
128
+ framework: $fw,
129
+ reactVersion: $ver,
130
+ entryFile: $entry,
131
+ package: "agentation",
132
+ mcp: { name: "agentation", server: "agentation-mcp", httpPort: $port }
133
+ }' "$CFG" > "$tmp" && mv "$tmp" "$CFG"
134
+ echo " ✓ .claude/kit.config.json (.annotate)"
135
+ else
136
+ echo " ⚠ no .claude/kit.config.json — run /kit-init first to persist annotate config (rule still written if .claude/ exists)"
137
+ fi
138
+
139
+ echo ""
140
+ echo "✓ Agentation wired for Claude — framework: $REACT_FRAMEWORK"
141
+ echo ""
142
+ echo "Next:"
143
+ echo " • Add the dev-only toolbar to ${REACT_ENTRY_FILE:-your app entry} — keep the endpoint prop:"
144
+ printf '%s\n' "$SNIPPET" | sed 's/^/ /'
145
+ echo " • Restart Claude Code so it loads the agentation MCP."
146
+ echo " • Start your dev server, then verify: npx agentation-mcp doctor"
147
+ echo " • Preflight: with the toolbar open + a note left, the receiver on :$HTTP_PORT should list a"
148
+ echo " session. Connected but 0 sessions ⇒ the endpoint prop is missing or the tab is stale."
149
+ exit 0