claude-dev-env 1.0.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.
Files changed (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +219 -0
  3. package/agents/agent-writer.md +157 -0
  4. package/agents/clasp-deployment-orchestrator.md +609 -0
  5. package/agents/clean-coder.md +295 -0
  6. package/agents/code-quality-agent.md +40 -0
  7. package/agents/code-standards-agent.md +93 -0
  8. package/agents/config-centralizer.md +686 -0
  9. package/agents/config-extraction-agent.md +225 -0
  10. package/agents/doc-orchestrator.md +47 -0
  11. package/agents/docs-agent.md +112 -0
  12. package/agents/docx-agent.md +211 -0
  13. package/agents/git-commit-crafter.md +100 -0
  14. package/agents/magic-value-eliminator-agent.md +72 -0
  15. package/agents/mandatory-agent-workflow-agent.md +88 -0
  16. package/agents/parallel-workflow-coordinator.md +779 -0
  17. package/agents/pdf-agent.md +302 -0
  18. package/agents/plan-executor.md +226 -0
  19. package/agents/pr-description-writer.md +87 -0
  20. package/agents/project-context-loader.md +238 -0
  21. package/agents/project-docs-analyzer.md +54 -0
  22. package/agents/project-structure-organizer-agent.md +72 -0
  23. package/agents/readability-review-agent.md +76 -0
  24. package/agents/refactoring-specialist.md +69 -0
  25. package/agents/right-sized-engineer.md +129 -0
  26. package/agents/session-continuity-manager.md +53 -0
  27. package/agents/skill-to-agent-converter.md +371 -0
  28. package/agents/skill-writer-agent.md +470 -0
  29. package/agents/stub-detector-agent.md +140 -0
  30. package/agents/tdd-test-writer.md +62 -0
  31. package/agents/test-data-builder.md +68 -0
  32. package/agents/tooling-builder.md +78 -0
  33. package/agents/user-docs-writer.md +67 -0
  34. package/agents/validation-expert.md +71 -0
  35. package/agents/workflow-visual-documenter.md +82 -0
  36. package/agents/xlsx-agent.md +169 -0
  37. package/bin/install.mjs +256 -0
  38. package/commands/commit.md +28 -0
  39. package/commands/docupdate.md +322 -0
  40. package/commands/implement.md +102 -0
  41. package/commands/initialize.md +91 -0
  42. package/commands/plan.md +63 -0
  43. package/commands/pr-comments.md +47 -0
  44. package/commands/readability-review.md +20 -0
  45. package/commands/review-plan.md +7 -0
  46. package/commands/right-size.md +15 -0
  47. package/commands/stubcheck.md +89 -0
  48. package/commands/sum.md +30 -0
  49. package/docs/CODE_RULES.md +186 -0
  50. package/docs/DJANGO_PATTERNS.md +80 -0
  51. package/docs/REACT_PATTERNS.md +185 -0
  52. package/docs/TEST_QUALITY.md +104 -0
  53. package/hooks/advisory/migration-safety-advisor.py +49 -0
  54. package/hooks/advisory/refactor-guard.py +205 -0
  55. package/hooks/blocking/block-main-commit.py +168 -0
  56. package/hooks/blocking/code-rules-enforcer.py +549 -0
  57. package/hooks/blocking/destructive-command-blocker.py +107 -0
  58. package/hooks/blocking/docker-settings-guard.py +44 -0
  59. package/hooks/blocking/hedging-language-blocker.py +130 -0
  60. package/hooks/blocking/parallel-task-blocker.py +69 -0
  61. package/hooks/blocking/pr-description-enforcer.py +87 -0
  62. package/hooks/blocking/pyautogui-scroll-blocker.py +74 -0
  63. package/hooks/blocking/sensitive-file-protector.py +70 -0
  64. package/hooks/blocking/tdd-enforcer.py +62 -0
  65. package/hooks/blocking/test-preflight-check.py +343 -0
  66. package/hooks/blocking/write-existing-file-blocker.py +63 -0
  67. package/hooks/git-hooks/post-commit.py +103 -0
  68. package/hooks/github-action/test_workflow.py +33 -0
  69. package/hooks/hooks.json +246 -0
  70. package/hooks/lifecycle/config-change-guard.py +84 -0
  71. package/hooks/lifecycle/session-end-cleanup.py +59 -0
  72. package/hooks/notification/attention-needed-notify.py +63 -0
  73. package/hooks/notification/claude-notification-handler.py +59 -0
  74. package/hooks/notification/notification_utils.py +206 -0
  75. package/hooks/rewrite-plugin-paths.py +116 -0
  76. package/hooks/session/bulk-edit-reminder.py +30 -0
  77. package/hooks/session/code-rules-reminder.py +97 -0
  78. package/hooks/session/compact-context-reinject.py +39 -0
  79. package/hooks/session/hook-structure-context.py +140 -0
  80. package/hooks/session/plugin-data-dir-cleanup.py +39 -0
  81. package/hooks/validation/code-style-validator.py +145 -0
  82. package/hooks/validation/e2e-test-validator.py +142 -0
  83. package/hooks/validation/hook-format-validator.py +66 -0
  84. package/hooks/validation/mypy_validator.py +180 -0
  85. package/hooks/validators/README.md +125 -0
  86. package/hooks/validators/VALIDATION_REPORT.md +287 -0
  87. package/hooks/validators/__init__.py +19 -0
  88. package/hooks/validators/abbreviation_checks.py +82 -0
  89. package/hooks/validators/code_quality_checks.py +133 -0
  90. package/hooks/validators/comment_checks.py +188 -0
  91. package/hooks/validators/file_structure_checks.py +182 -0
  92. package/hooks/validators/git_checks.py +107 -0
  93. package/hooks/validators/health_check.py +214 -0
  94. package/hooks/validators/magic_value_checks.py +81 -0
  95. package/hooks/validators/mypy_integration.py +52 -0
  96. package/hooks/validators/output_formatter.py +266 -0
  97. package/hooks/validators/pr_reference_checks.py +72 -0
  98. package/hooks/validators/python_antipattern_checks.py +110 -0
  99. package/hooks/validators/python_style_checks.py +364 -0
  100. package/hooks/validators/react_checks.py +90 -0
  101. package/hooks/validators/ruff_integration.py +80 -0
  102. package/hooks/validators/run_all_validators.py +772 -0
  103. package/hooks/validators/security_checks.py +135 -0
  104. package/hooks/validators/test_abbreviation_checks.py +76 -0
  105. package/hooks/validators/test_bad.tsx +7 -0
  106. package/hooks/validators/test_code_quality_checks.py +129 -0
  107. package/hooks/validators/test_file_structure_checks.py +307 -0
  108. package/hooks/validators/test_files/01_basic_component.tsx +10 -0
  109. package/hooks/validators/test_files/02_component_without_react.tsx +10 -0
  110. package/hooks/validators/test_files/03_pure_component.tsx +10 -0
  111. package/hooks/validators/test_files/04_pure_component_import.tsx +10 -0
  112. package/hooks/validators/test_files/05_typescript_generics.tsx +14 -0
  113. package/hooks/validators/test_files/06_typescript_two_generics.tsx +18 -0
  114. package/hooks/validators/test_files/07_multiline_declaration.tsx +11 -0
  115. package/hooks/validators/test_files/08_error_boundary_valid.tsx +14 -0
  116. package/hooks/validators/test_files/09_error_boundary_with_other_class.tsx +20 -0
  117. package/hooks/validators/test_files/10_inheritance_chain.tsx +16 -0
  118. package/hooks/validators/test_files/11_ts_file.ts +10 -0
  119. package/hooks/validators/test_files/12_non_react_class.tsx +14 -0
  120. package/hooks/validators/test_files/13_functional_component.tsx +8 -0
  121. package/hooks/validators/test_files/14_indented_class.tsx +13 -0
  122. package/hooks/validators/test_files/15_getDerivedStateFromError.tsx +14 -0
  123. package/hooks/validators/test_files/16_mixed_components.tsx +20 -0
  124. package/hooks/validators/test_files/EXECUTIVE_SUMMARY.md +175 -0
  125. package/hooks/validators/test_files/TEST_RESULTS_TABLE.txt +60 -0
  126. package/hooks/validators/test_files/VALIDATION_REPORT.md +201 -0
  127. package/hooks/validators/test_files/async_views.py +23 -0
  128. package/hooks/validators/test_files/async_with_imports.py +14 -0
  129. package/hooks/validators/test_files/bad_inline_imports.py +37 -0
  130. package/hooks/validators/test_files/management/commands/cmd_01_no_debug_check.py +10 -0
  131. package/hooks/validators/test_files/management/commands/cmd_02_proper_debug_check.py +14 -0
  132. package/hooks/validators/test_files/management/commands/cmd_03_debug_check_with_return.py +14 -0
  133. package/hooks/validators/test_files/management/commands/cmd_04_imported_DEBUG.py +14 -0
  134. package/hooks/validators/test_files/management/commands/cmd_05_debug_check_in_helper.py +16 -0
  135. package/hooks/validators/test_files/management/commands/cmd_06_debug_check_late.py +22 -0
  136. package/hooks/validators/test_files/management/commands/cmd_07_positive_debug_check.py +15 -0
  137. package/hooks/validators/test_files/management/commands/cmd_08_debug_with_and.py +14 -0
  138. package/hooks/validators/test_files/not_management_command.py +10 -0
  139. package/hooks/validators/test_files/skip_decorators/test_01_simple_skip.py +8 -0
  140. package/hooks/validators/test_files/skip_decorators/test_02_pytest_skipif.py +8 -0
  141. package/hooks/validators/test_files/skip_decorators/test_03_unittest_skipIf.py +8 -0
  142. package/hooks/validators/test_files/skip_decorators/test_04_skip_with_parens.py +8 -0
  143. package/hooks/validators/test_files/skip_decorators/test_05_xfail.py +7 -0
  144. package/hooks/validators/test_files/skip_decorators/test_06_custom_skip.py +11 -0
  145. package/hooks/validators/test_files/skip_decorators/test_07_capital_Skip.py +8 -0
  146. package/hooks/validators/test_files/skip_decorators/test_08_skipUnless.py +7 -0
  147. package/hooks/validators/test_files/skip_decorators/test_09_pytest_mark_skip_simple.py +7 -0
  148. package/hooks/validators/test_files/test_async_functions.py +45 -0
  149. package/hooks/validators/test_files/test_purecomponent/PureComponentExample.tsx +7 -0
  150. package/hooks/validators/test_files/test_purecomponent/ReactPureComponentExample.tsx +7 -0
  151. package/hooks/validators/test_git_checks.py +295 -0
  152. package/hooks/validators/test_good.tsx +5 -0
  153. package/hooks/validators/test_health_check.py +57 -0
  154. package/hooks/validators/test_magic_value_checks.py +63 -0
  155. package/hooks/validators/test_mypy_integration.py +27 -0
  156. package/hooks/validators/test_output_formatter.py +150 -0
  157. package/hooks/validators/test_pr_reference_checks.py +41 -0
  158. package/hooks/validators/test_python_antipattern_checks.py +113 -0
  159. package/hooks/validators/test_python_style_checks.py +439 -0
  160. package/hooks/validators/test_react_checks.py +213 -0
  161. package/hooks/validators/test_results.txt +25 -0
  162. package/hooks/validators/test_ruff_integration.py +27 -0
  163. package/hooks/validators/test_run_all_validators.py +228 -0
  164. package/hooks/validators/test_run_all_validators_integration.py +48 -0
  165. package/hooks/validators/test_safety_checks.py +243 -0
  166. package/hooks/validators/test_security_checks.py +105 -0
  167. package/hooks/validators/test_test_safety_checks.py +321 -0
  168. package/hooks/validators/test_todo_checks.py +39 -0
  169. package/hooks/validators/test_type_safety_checks.py +85 -0
  170. package/hooks/validators/test_useless_test_checks.py +55 -0
  171. package/hooks/validators/test_validator_base.py +26 -0
  172. package/hooks/validators/test_verify_paths.py +34 -0
  173. package/hooks/validators/todo_checks.py +59 -0
  174. package/hooks/validators/type_safety_checks.py +101 -0
  175. package/hooks/validators/useless_test_checks.py +92 -0
  176. package/hooks/validators/validator_base.py +19 -0
  177. package/hooks/validators/verify_paths.py +57 -0
  178. package/hooks/workflow/auto-formatter.py +114 -0
  179. package/hooks/workflow/investigation-tracker-reset.py +46 -0
  180. package/package.json +30 -0
  181. package/rules/agent-spawn-protocol.md +47 -0
  182. package/rules/cleanup-temp-files.md +27 -0
  183. package/rules/code-reviews.md +11 -0
  184. package/rules/code-standards.md +43 -0
  185. package/rules/conservative-action.md +20 -0
  186. package/rules/context7.md +12 -0
  187. package/rules/explore-thoroughly.md +27 -0
  188. package/rules/git-workflow.md +42 -0
  189. package/rules/parallel-tools.md +23 -0
  190. package/rules/research-mode.md +23 -0
  191. package/rules/right-sized-engineering.md +28 -0
  192. package/rules/tdd.md +7 -0
  193. package/rules/testing.md +12 -0
  194. package/skills/agent-prompt/SKILL.md +102 -0
  195. package/skills/anthropic-plan/SKILL.md +107 -0
  196. package/skills/everything-search/SKILL.md +144 -0
  197. package/skills/ingest/SKILL.md +40 -0
  198. package/skills/npm-creator/SKILL.md +183 -0
  199. package/skills/pr-review-responder/EXAMPLES.md +590 -0
  200. package/skills/pr-review-responder/PRINCIPLES.md +539 -0
  201. package/skills/pr-review-responder/README.md +209 -0
  202. package/skills/pr-review-responder/SKILL.md +202 -0
  203. package/skills/pr-review-responder/TESTING.md +407 -0
  204. package/skills/pr-review-responder/scripts/respond_to_reviews.py +376 -0
  205. package/skills/pr-review-responder/update_skill.py +297 -0
  206. package/skills/prompt-generator/REFERENCE.md +150 -0
  207. package/skills/prompt-generator/SKILL.md +154 -0
  208. package/skills/readability-review/SKILL.md +127 -0
  209. package/skills/recall/SKILL.md +27 -0
  210. package/skills/remember/SKILL.md +63 -0
  211. package/skills/rule-audit/SKILL.md +307 -0
  212. package/skills/rule-creator/SKILL.md +150 -0
  213. package/skills/skill-writer/REFERENCE.md +246 -0
  214. package/skills/skill-writer/SKILL.md +270 -0
  215. package/skills/tdd-team/SKILL.md +128 -0
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: npm-creator
3
+ description: Scaffold an npm-installable package for any Claude Code plugin repo. Detects plugin directories (rules/, hooks/, agents/, etc.), asks about package metadata, then generates package.json and a cross-platform Node.js installer (bin/install.mjs). Use when turning a plugin repo into an npx-installable package.
4
+ user_invocable: true
5
+ ---
6
+
7
+ # npm-creator
8
+
9
+ ## Overview
10
+
11
+ Scaffold a cross-platform npm package for Claude Code plugin repos so users can install via `npx <package-name>`.
12
+
13
+ **Core principle:** The installer copies plugin files to ~/.claude/ using only Node.js built-ins. Zero external dependencies, works on Linux, macOS, and Windows.
14
+
15
+ **Announce at start:** "I'm using the npm-creator skill to scaffold an npm package for this plugin repo."
16
+
17
+ **Context:** Use after a plugin repo has its content files (rules, hooks, agents, etc.) in place. This skill adds the packaging layer on top.
18
+
19
+ ## The Process
20
+
21
+ ### Step 1: Detect Plugin Structure
22
+
23
+ Scan the current repo root for these directories:
24
+
25
+ | Directory | Purpose | Install destination |
26
+ |-----------|---------|-------------------|
27
+ | `rules/` | Behavioral rules (.md) | `~/.claude/rules/` |
28
+ | `docs/` | Reference documents (.md) | `~/.claude/docs/` |
29
+ | `commands/` | Slash commands (.md) | `~/.claude/commands/` |
30
+ | `agents/` | Agent definitions (.md) | `~/.claude/agents/` |
31
+ | `skills/` | Skill packages (subdirs) | `~/.claude/skills/` |
32
+ | `hooks/` | Hook scripts + hooks.json | Merge into `~/.claude/settings.json` |
33
+
34
+ Use Glob to find which directories exist and count files in each. Report findings to the user.
35
+
36
+ If the repo has no recognized directories, say so and ask if the structure uses different names.
37
+
38
+ ### Step 2: Gather Package Metadata
39
+
40
+ Ask the user (use AskUserQuestion, one call with all questions):
41
+
42
+ 1. **Package name** — suggest the repo directory name. Ask if scoped (@org/) or unscoped.
43
+ 2. **Description** — suggest based on detected content ("Claude Code plugin with X rules, Y agents, Z hooks").
44
+ 3. **CLAUDE.md generation** — should the installer concatenate rules + docs into a CLAUDE.md? (Yes if both rules/ and docs/ exist.)
45
+ 4. **Python detection** — does the plugin use Python hooks? (Yes if hooks/ contains .py files.) If yes, the installer will detect python3/python/py at install time.
46
+
47
+ ### Step 3: Generate package.json
48
+
49
+ Create `package.json` at the repo root with:
50
+
51
+ - `name`: from Step 2
52
+ - `version`: "1.0.0"
53
+ - `description`: from Step 2
54
+ - `type`: "module"
55
+ - `bin`: `{ "<package-name>": "./bin/install.mjs" }`
56
+ - `files`: array of detected directories + `["bin/"]`
57
+ - `keywords`: `["claude-code", "plugin", "cli"]`
58
+ - `license`: "MIT"
59
+ - `repository`: detect from `git remote get-url origin` if available
60
+
61
+ ### Step 4: Generate bin/install.mjs
62
+
63
+ Create `bin/install.mjs` with a shebang (`#!/usr/bin/env node`) and these capabilities:
64
+
65
+ **Imports:** Only `node:fs`, `node:path`, `node:os`, `node:child_process`, `node:url`.
66
+
67
+ **Path resolution:**
68
+ - `CLAUDE_HOME` = `path.join(os.homedir(), '.claude')`
69
+ - `PACKAGE_ROOT` = resolve from `import.meta.url` using `fileURLToPath` and `path.dirname`
70
+
71
+ **Install mode (default — no flags):**
72
+
73
+ For each detected directory from Step 1:
74
+ - Copy files from package to CLAUDE_HOME, preserving directory structure
75
+ - For skills/, copy recursively (each skill is a subdirectory)
76
+ - For each file, log with status icon:
77
+ - New file: ` ✓ rules/tdd.md (new)`
78
+ - Existing file: ` ↻ rules/tdd.md (updated)`
79
+
80
+ If CLAUDE.md generation is enabled:
81
+ - Concatenate all rules/*.md under `# Project Rules (from <package-name> plugin)`
82
+ - Concatenate all docs/*.md under `# Reference Docs`
83
+ - Each file gets an `## {filename without extension}` header
84
+ - Write to `CLAUDE_HOME/CLAUDE.md`
85
+
86
+ If Python hooks detected:
87
+ - Try `python3 --version`, then `python --version` (verify Python 3), then `py -3 --version`
88
+ - Use the first that succeeds
89
+ - If none work: print error and exit with code 1
90
+
91
+ If hooks/hooks.json exists:
92
+ - Read it and the destination `CLAUDE_HOME/settings.json` (create `{}` if missing)
93
+ - For each event type, for each matcher group:
94
+ - Replace `python3` with detected python command (if applicable)
95
+ - Replace `${CLAUDE_PLUGIN_ROOT}` with the absolute CLAUDE_HOME hooks path
96
+ - Check for duplicate matcher groups (idempotent — skip if already present)
97
+ - Append new groups
98
+ - Write settings.json with `JSON.stringify(data, null, 4)`
99
+
100
+ Print summary:
101
+ ```
102
+ Installed <package-name>:
103
+ Rules: N files (X new, Y updated)
104
+ Agents: N files (X new, Y updated)
105
+ Hooks: N groups merged into settings.json
106
+ Python: python3
107
+ ```
108
+
109
+ **Uninstall mode (`--uninstall` flag):**
110
+ - Remove only files matching the package's file list (never delete user-created files)
111
+ - Log each removal: ` ✗ rules/tdd.md (removed)`
112
+ - Remove hook entries from settings.json by matching command paths
113
+ - Remove generated CLAUDE.md if it exists
114
+ - Print removal summary
115
+
116
+ **Error handling:**
117
+ - Create CLAUDE_HOME with `fs.mkdirSync(path, { recursive: true })` if missing
118
+ - If settings.json is malformed JSON, print error and exit (never clobber)
119
+ - Skip missing source directories with a warning
120
+
121
+ ### Step 5: Update README.md
122
+
123
+ If a README.md exists, offer to update the install section with:
124
+
125
+ ```
126
+ ## Install
127
+
128
+ \`\`\`bash
129
+ npx <package-name>
130
+ \`\`\`
131
+
132
+ To uninstall:
133
+
134
+ \`\`\`bash
135
+ npx <package-name> --uninstall
136
+ \`\`\`
137
+ ```
138
+
139
+ Preserve all other README content.
140
+
141
+ ## Output Format
142
+
143
+ Two new files created:
144
+ 1. `package.json` at repo root
145
+ 2. `bin/install.mjs` at bin/ directory
146
+
147
+ One file optionally updated:
148
+ 3. `README.md` install section
149
+
150
+ ## After Completion
151
+
152
+ Suggest the user test locally:
153
+ - `node bin/install.mjs` (install)
154
+ - `node bin/install.mjs --uninstall` (uninstall)
155
+ - Verify files appeared in `~/.claude/`
156
+ - Verify hooks merged into `~/.claude/settings.json`
157
+
158
+ When ready to publish: `npm publish`
159
+
160
+ ## Red Flags - STOP
161
+
162
+ - Repo has no recognized plugin directories (rules/, hooks/, agents/, etc.)
163
+ - hooks.json references tools or paths outside the plugin structure
164
+ - Package name conflicts with an existing npm package (suggest checking npmjs.com)
165
+ - Plugin files contain secrets or credentials that would be published
166
+
167
+ ## Rationalization Prevention
168
+
169
+ | Excuse | Reality |
170
+ |--------|---------|
171
+ | "I'll add cross-platform support later" | Use path.join() and os.homedir() from the start. Retrofitting is painful. |
172
+ | "Shell commands are simpler for file copying" | Shell commands break on Windows. fs APIs work everywhere. |
173
+ | "One big install function is fine" | Separate install/uninstall/detect functions keep each under 50 lines. |
174
+ | "We can skip idempotency" | Users will run the installer multiple times. Duplicate hooks break sessions. |
175
+
176
+ ## Remember
177
+
178
+ - Zero external dependencies — only Node.js built-ins
179
+ - hooks.json in the repo stays canonical (python3 + ${CLAUDE_PLUGIN_ROOT})
180
+ - Rewriting happens only in the destination settings.json
181
+ - path.join() everywhere — never concatenate paths with `/` or `\`
182
+ - Idempotent: running twice produces the same result
183
+ - Log every file action so the user sees what changed