buildwithjpegg 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 (64) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/.codex/INSTALL.md +67 -0
  4. package/.opencode/INSTALL.md +118 -0
  5. package/.opencode/plugins/buildwithjpegg.js +95 -0
  6. package/LICENSE +24 -0
  7. package/README.md +134 -0
  8. package/RELEASE-NOTES.md +7 -0
  9. package/agents/code-reviewer.md +48 -0
  10. package/commands/evaluate.md +6 -0
  11. package/commands/run-build.md +6 -0
  12. package/commands/write-blueprint.md +6 -0
  13. package/hooks/hooks.json +16 -0
  14. package/hooks/run-hook.cmd +43 -0
  15. package/hooks/session-start.sh +46 -0
  16. package/lib/skills-core.js +208 -0
  17. package/package.json +39 -0
  18. package/rules/conventions.md +22 -0
  19. package/rules/git.md +18 -0
  20. package/rules/mcp-servers.md +28 -0
  21. package/rules/platform.md +10 -0
  22. package/rules/stack.md +29 -0
  23. package/rules/testing.md +18 -0
  24. package/rules/ui-ux.md +151 -0
  25. package/rules/workflow.md +48 -0
  26. package/skills/auto-release/SKILL.md +176 -0
  27. package/skills/blueprint/SKILL.md +116 -0
  28. package/skills/build/SKILL.md +84 -0
  29. package/skills/ci-loop/SKILL.md +98 -0
  30. package/skills/craft-skill/SKILL.md +655 -0
  31. package/skills/craft-skill/anthropic-best-practices.md +1150 -0
  32. package/skills/craft-skill/examples/CLAUDE_MD_TESTING.md +189 -0
  33. package/skills/craft-skill/graphviz-conventions.dot +172 -0
  34. package/skills/craft-skill/persuasion-principles.md +187 -0
  35. package/skills/craft-skill/render-graphs.js +168 -0
  36. package/skills/craft-skill/testing-skills-with-subagents.md +384 -0
  37. package/skills/delegate/SKILL.md +242 -0
  38. package/skills/delegate/code-quality-reviewer-prompt.md +20 -0
  39. package/skills/delegate/implementer-prompt.md +78 -0
  40. package/skills/delegate/spec-reviewer-prompt.md +61 -0
  41. package/skills/draft-prs/SKILL.md +132 -0
  42. package/skills/evaluate/SKILL.md +96 -0
  43. package/skills/fan-out/SKILL.md +180 -0
  44. package/skills/handle-review/SKILL.md +213 -0
  45. package/skills/onboard/SKILL.md +95 -0
  46. package/skills/pr-stack/SKILL.md +112 -0
  47. package/skills/pre-ship/SKILL.md +139 -0
  48. package/skills/root-cause/CREATION-LOG.md +119 -0
  49. package/skills/root-cause/SKILL.md +296 -0
  50. package/skills/root-cause/condition-based-waiting-example.ts +158 -0
  51. package/skills/root-cause/condition-based-waiting.md +115 -0
  52. package/skills/root-cause/defense-in-depth.md +122 -0
  53. package/skills/root-cause/find-polluter.sh +63 -0
  54. package/skills/root-cause/root-cause-tracing.md +169 -0
  55. package/skills/root-cause/test-academic.md +14 -0
  56. package/skills/root-cause/test-pressure-1.md +58 -0
  57. package/skills/root-cause/test-pressure-2.md +68 -0
  58. package/skills/root-cause/test-pressure-3.md +69 -0
  59. package/skills/seek-review/SKILL.md +105 -0
  60. package/skills/seek-review/code-reviewer.md +146 -0
  61. package/skills/test-first/SKILL.md +371 -0
  62. package/skills/test-first/testing-anti-patterns.md +299 -0
  63. package/skills/worktree/SKILL.md +218 -0
  64. package/skills/wrap-up/SKILL.md +200 -0
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "buildwithjpegg",
3
+ "description": "Development workflow skills for Claude Code",
4
+ "owner": {
5
+ "name": "jpegg"
6
+ },
7
+ "plugins": [
8
+ {
9
+ "name": "buildwithjpegg",
10
+ "description": "Development workflow skills for Claude Code: TDD, debugging, collaboration patterns, and proven techniques",
11
+ "version": "1.0.0",
12
+ "source": "./",
13
+ "author": {
14
+ "name": "jpegg"
15
+ }
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "buildwithjpegg",
3
+ "description": "Development workflow skills for Claude Code: TDD, debugging, collaboration patterns, and proven techniques",
4
+ "version": "1.0.0",
5
+ "author": {
6
+ "name": "jpegg"
7
+ },
8
+ "homepage": "https://github.com/jpeggdev/buildwithjpegg",
9
+ "repository": "https://github.com/jpeggdev/buildwithjpegg",
10
+ "license": "MIT",
11
+ "keywords": ["skills", "tdd", "debugging", "collaboration", "best-practices", "workflows"]
12
+ }
@@ -0,0 +1,67 @@
1
+ # Installing buildwithjpegg for Codex
2
+
3
+ Enable buildwithjpegg skills in Codex via native skill discovery. Just clone and symlink.
4
+
5
+ ## Prerequisites
6
+
7
+ - Git
8
+
9
+ ## Installation
10
+
11
+ 1. **Clone the buildwithjpegg repository:**
12
+ ```bash
13
+ git clone https://github.com/jpeggdev/buildwithjpegg.git ~/.codex/buildwithjpegg
14
+ ```
15
+
16
+ 2. **Create the skills symlink:**
17
+ ```bash
18
+ mkdir -p ~/.agents/skills
19
+ ln -s ~/.codex/buildwithjpegg/skills ~/.agents/skills/buildwithjpegg
20
+ ```
21
+
22
+ **Windows (PowerShell):**
23
+ ```powershell
24
+ New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.agents\skills"
25
+ cmd /c mklink /J "$env:USERPROFILE\.agents\skills\buildwithjpegg" "$env:USERPROFILE\.codex\buildwithjpegg\skills"
26
+ ```
27
+
28
+ 3. **Restart Codex** (quit and relaunch the CLI) to discover the skills.
29
+
30
+ ## Migrating from old bootstrap
31
+
32
+ If you installed buildwithjpegg before native skill discovery, you need to:
33
+
34
+ 1. **Update the repo:**
35
+ ```bash
36
+ cd ~/.codex/buildwithjpegg && git pull
37
+ ```
38
+
39
+ 2. **Create the skills symlink** (step 2 above) -- this is the new discovery mechanism.
40
+
41
+ 3. **Remove the old bootstrap block** from `~/.codex/AGENTS.md` -- any block referencing `buildwithjpegg bootstrap` is no longer needed.
42
+
43
+ 4. **Restart Codex.**
44
+
45
+ ## Verify
46
+
47
+ ```bash
48
+ ls -la ~/.agents/skills/buildwithjpegg
49
+ ```
50
+
51
+ You should see a symlink (or junction on Windows) pointing to your buildwithjpegg skills directory.
52
+
53
+ ## Updating
54
+
55
+ ```bash
56
+ cd ~/.codex/buildwithjpegg && git pull
57
+ ```
58
+
59
+ Skills update instantly through the symlink.
60
+
61
+ ## Uninstalling
62
+
63
+ ```bash
64
+ rm ~/.agents/skills/buildwithjpegg
65
+ ```
66
+
67
+ Optionally delete the clone: `rm -rf ~/.codex/buildwithjpegg`.
@@ -0,0 +1,118 @@
1
+ # Installing buildwithjpegg for OpenCode
2
+
3
+ ## Prerequisites
4
+
5
+ - [OpenCode.ai](https://opencode.ai) installed
6
+ - Git installed
7
+
8
+ ## Installation Steps
9
+
10
+ ### 1. Clone buildwithjpegg
11
+
12
+ ```bash
13
+ git clone https://github.com/jpeggdev/buildwithjpegg.git ~/.config/opencode/buildwithjpegg
14
+ ```
15
+
16
+ ### 2. Register the Plugin
17
+
18
+ Create a symlink so OpenCode discovers the plugin:
19
+
20
+ ```bash
21
+ mkdir -p ~/.config/opencode/plugins
22
+ rm -f ~/.config/opencode/plugins/buildwithjpegg.js
23
+ ln -s ~/.config/opencode/buildwithjpegg/.opencode/plugins/buildwithjpegg.js ~/.config/opencode/plugins/buildwithjpegg.js
24
+ ```
25
+
26
+ ### 3. Symlink Skills
27
+
28
+ Create a symlink so OpenCode's native skill tool discovers buildwithjpegg skills:
29
+
30
+ ```bash
31
+ mkdir -p ~/.config/opencode/skills
32
+ rm -rf ~/.config/opencode/skills/buildwithjpegg
33
+ ln -s ~/.config/opencode/buildwithjpegg/skills ~/.config/opencode/skills/buildwithjpegg
34
+ ```
35
+
36
+ ### 4. Restart OpenCode
37
+
38
+ Restart OpenCode. The plugin will automatically inject buildwithjpegg context.
39
+
40
+ Verify by asking: "do you have buildwithjpegg?"
41
+
42
+ ## Usage
43
+
44
+ ### Finding Skills
45
+
46
+ Use OpenCode's native `skill` tool to list available skills:
47
+
48
+ ```
49
+ use skill tool to list skills
50
+ ```
51
+
52
+ ### Loading a Skill
53
+
54
+ Use OpenCode's native `skill` tool to load a specific skill:
55
+
56
+ ```
57
+ use skill tool to load buildwithjpegg/evaluate
58
+ ```
59
+
60
+ ### Personal Skills
61
+
62
+ Create your own skills in `~/.config/opencode/skills/`:
63
+
64
+ ```bash
65
+ mkdir -p ~/.config/opencode/skills/my-skill
66
+ ```
67
+
68
+ Create `~/.config/opencode/skills/my-skill/SKILL.md`:
69
+
70
+ ```markdown
71
+ ---
72
+ name: my-skill
73
+ description: Use when [condition] - [what it does]
74
+ ---
75
+
76
+ # My Skill
77
+
78
+ [Your skill content here]
79
+ ```
80
+
81
+ ### Project Skills
82
+
83
+ Create project-specific skills in `.opencode/skills/` within your project.
84
+
85
+ **Skill Priority:** Project skills > Personal skills > buildwithjpegg skills
86
+
87
+ ## Updating
88
+
89
+ ```bash
90
+ cd ~/.config/opencode/buildwithjpegg
91
+ git pull
92
+ ```
93
+
94
+ ## Troubleshooting
95
+
96
+ ### Plugin not loading
97
+
98
+ 1. Check plugin symlink: `ls -l ~/.config/opencode/plugins/buildwithjpegg.js`
99
+ 2. Check source exists: `ls ~/.config/opencode/buildwithjpegg/.opencode/plugins/buildwithjpegg.js`
100
+ 3. Check OpenCode logs for errors
101
+
102
+ ### Skills not found
103
+
104
+ 1. Check skills symlink: `ls -l ~/.config/opencode/skills/buildwithjpegg`
105
+ 2. Verify it points to: `~/.config/opencode/buildwithjpegg/skills`
106
+ 3. Use `skill` tool to list what's discovered
107
+
108
+ ### Tool mapping
109
+
110
+ When skills reference Claude Code tools:
111
+ - `TodoWrite` -> `update_plan`
112
+ - `Task` with subagents -> `@mention` syntax
113
+ - `Skill` tool -> OpenCode's native `skill` tool
114
+ - File operations -> your native tools
115
+
116
+ ## Getting Help
117
+
118
+ - Report issues: https://github.com/jpeggdev/buildwithjpegg/issues
@@ -0,0 +1,95 @@
1
+ /**
2
+ * buildwithjpegg plugin for OpenCode.ai
3
+ *
4
+ * Injects buildwithjpegg bootstrap context via system prompt transform.
5
+ * Skills are discovered via OpenCode's native skill tool from symlinked directory.
6
+ */
7
+
8
+ import path from 'path';
9
+ import fs from 'fs';
10
+ import os from 'os';
11
+ import { fileURLToPath } from 'url';
12
+
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+
15
+ // Simple frontmatter extraction (avoid dependency on skills-core for bootstrap)
16
+ const extractAndStripFrontmatter = (content) => {
17
+ const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
18
+ if (!match) return { frontmatter: {}, content };
19
+
20
+ const frontmatterStr = match[1];
21
+ const body = match[2];
22
+ const frontmatter = {};
23
+
24
+ for (const line of frontmatterStr.split('\n')) {
25
+ const colonIdx = line.indexOf(':');
26
+ if (colonIdx > 0) {
27
+ const key = line.slice(0, colonIdx).trim();
28
+ const value = line.slice(colonIdx + 1).trim().replace(/^["']|["']$/g, '');
29
+ frontmatter[key] = value;
30
+ }
31
+ }
32
+
33
+ return { frontmatter, content: body };
34
+ };
35
+
36
+ // Normalize a path: trim whitespace, expand ~, resolve to absolute
37
+ const normalizePath = (p, homeDir) => {
38
+ if (!p || typeof p !== 'string') return null;
39
+ let normalized = p.trim();
40
+ if (!normalized) return null;
41
+ if (normalized.startsWith('~/')) {
42
+ normalized = path.join(homeDir, normalized.slice(2));
43
+ } else if (normalized === '~') {
44
+ normalized = homeDir;
45
+ }
46
+ return path.resolve(normalized);
47
+ };
48
+
49
+ export const BuildwithjpeggPlugin = async ({ client, directory }) => {
50
+ const homeDir = os.homedir();
51
+ const pluginSkillsDir = path.resolve(__dirname, '../../skills');
52
+ const envConfigDir = normalizePath(process.env.OPENCODE_CONFIG_DIR, homeDir);
53
+ const configDir = envConfigDir || path.join(homeDir, '.config/opencode');
54
+
55
+ // Helper to generate bootstrap content
56
+ const getBootstrapContent = () => {
57
+ // Try to load onboard skill
58
+ const skillPath = path.join(pluginSkillsDir, 'onboard', 'SKILL.md');
59
+ if (!fs.existsSync(skillPath)) return null;
60
+
61
+ const fullContent = fs.readFileSync(skillPath, 'utf8');
62
+ const { content } = extractAndStripFrontmatter(fullContent);
63
+
64
+ const toolMapping = `**Tool Mapping for OpenCode:**
65
+ When skills reference tools you don't have, substitute OpenCode equivalents:
66
+ - \`TodoWrite\` → \`update_plan\`
67
+ - \`Task\` tool with subagents → Use OpenCode's subagent system (@mention)
68
+ - \`Skill\` tool → OpenCode's native \`skill\` tool
69
+ - \`Read\`, \`Write\`, \`Edit\`, \`Bash\` → Your native tools
70
+
71
+ **Skills location:**
72
+ buildwithjpegg skills are in \`${configDir}/skills/buildwithjpegg/\`
73
+ Use OpenCode's native \`skill\` tool to list and load skills.`;
74
+
75
+ return `<EXTREMELY_IMPORTANT>
76
+ You have buildwithjpegg.
77
+
78
+ **IMPORTANT: The onboard skill content is included below. It is ALREADY LOADED - you are currently following it. Do NOT use the skill tool to load "onboard" again - that would be redundant.**
79
+
80
+ ${content}
81
+
82
+ ${toolMapping}
83
+ </EXTREMELY_IMPORTANT>`;
84
+ };
85
+
86
+ return {
87
+ // Use system prompt transform to inject bootstrap (fixes agent reset bug)
88
+ 'experimental.chat.system.transform': async (_input, output) => {
89
+ const bootstrap = getBootstrapContent();
90
+ if (bootstrap) {
91
+ (output.system ||= []).push(bootstrap);
92
+ }
93
+ }
94
+ };
95
+ };
package/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 jpegg
4
+
5
+ Based on superpowers (https://github.com/obra/superpowers)
6
+ by Jesse Vincent, licensed under the MIT License.
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,134 @@
1
+ # buildwithjpegg
2
+
3
+ A complete software development workflow for your coding agents, built on composable skills and automatic invocation.
4
+
5
+ ## How it works
6
+
7
+ When you fire up your coding agent, it doesn't just jump into writing code. Instead, it steps back and asks what you're really trying to do.
8
+
9
+ Once it's teased a spec out of the conversation, it shows it to you in chunks short enough to actually read and digest.
10
+
11
+ After you've signed off on the design, your agent puts together an implementation plan that's clear enough for an enthusiastic junior engineer with no project context to follow. It emphasizes true red/green TDD, YAGNI, and DRY.
12
+
13
+ Next, it launches a task delegation process, having agents work through each engineering task, inspecting and reviewing their work, and continuing forward.
14
+
15
+ Because the skills trigger automatically, you don't need to do anything special.
16
+
17
+ ## Installation
18
+
19
+ **Note:** Installation differs by platform. Claude Code has a built-in plugin system. Codex and OpenCode require manual setup.
20
+
21
+ ### Claude Code (via Plugin Marketplace)
22
+
23
+ In Claude Code, register the marketplace first:
24
+
25
+ ```bash
26
+ /plugin marketplace add jpeggdev/buildwithjpegg-marketplace
27
+ ```
28
+
29
+ Then install the plugin:
30
+
31
+ ```bash
32
+ /plugin install buildwithjpegg@buildwithjpegg-marketplace
33
+ ```
34
+
35
+ ### Verify Installation
36
+
37
+ Start a new session and ask Claude to help with something that would trigger a skill (e.g., "help me plan this feature" or "let's debug this issue"). Claude should automatically invoke the relevant skill.
38
+
39
+ ### Codex
40
+
41
+ Tell Codex:
42
+
43
+ ```
44
+ Fetch and follow instructions from https://raw.githubusercontent.com/jpeggdev/buildwithjpegg/refs/heads/main/.codex/INSTALL.md
45
+ ```
46
+
47
+ **Detailed docs:** [.codex/INSTALL.md](.codex/INSTALL.md)
48
+
49
+ ### OpenCode
50
+
51
+ Tell OpenCode:
52
+
53
+ ```
54
+ Fetch and follow instructions from https://raw.githubusercontent.com/jpeggdev/buildwithjpegg/refs/heads/main/.opencode/INSTALL.md
55
+ ```
56
+
57
+ **Detailed docs:** [.opencode/INSTALL.md](.opencode/INSTALL.md)
58
+
59
+ ## The Basic Workflow
60
+
61
+ 1. **evaluate** - Activates before writing code. Refines rough ideas through questions, explores alternatives, presents design in sections for validation. Saves design document.
62
+
63
+ 2. **worktree** - Activates after design approval. Creates isolated workspace on new branch, runs project setup, verifies clean test baseline.
64
+
65
+ 3. **blueprint** - Activates with approved design. Breaks work into bite-sized tasks (2-5 minutes each). Every task has exact file paths, complete code, verification steps.
66
+
67
+ 4. **delegate** or **build** - Activates with plan. Dispatches fresh subagent per task with two-stage review (spec compliance, then code quality), or executes in batches with human checkpoints.
68
+
69
+ 5. **test-first** - Activates during implementation. Enforces RED-GREEN-REFACTOR: write failing test, watch it fail, write minimal code, watch it pass, commit.
70
+
71
+ 6. **seek-review** - Activates between tasks. Reviews against plan, reports issues by severity. Critical issues block progress.
72
+
73
+ 7. **wrap-up** - Activates when tasks complete. Verifies tests, presents options (merge/PR/keep/discard), cleans up worktree.
74
+
75
+ **The agent checks for relevant skills before any task.** Mandatory workflows, not suggestions.
76
+
77
+ ## What's Inside
78
+
79
+ ### Skills Library
80
+
81
+ **Testing**
82
+ - **test-first** - RED-GREEN-REFACTOR cycle (includes testing anti-patterns reference)
83
+
84
+ **Debugging**
85
+ - **root-cause** - 4-phase root cause process (includes root-cause-tracing, defense-in-depth, condition-based-waiting techniques)
86
+ - **pre-ship** - Ensure it's actually fixed
87
+
88
+ **Collaboration**
89
+ - **evaluate** - Socratic design refinement
90
+ - **blueprint** - Detailed implementation plans
91
+ - **build** - Batch execution with checkpoints
92
+ - **fan-out** - Concurrent subagent workflows
93
+ - **seek-review** - Pre-review checklist
94
+ - **handle-review** - Responding to feedback
95
+ - **worktree** - Parallel development branches
96
+ - **wrap-up** - Merge/PR decision workflow
97
+ - **delegate** - Fast iteration with two-stage review (spec compliance, then code quality)
98
+
99
+ **CI/CD**
100
+ - **ci-loop** - Monitor CI and automatically fix failures after PR creation
101
+ - **draft-prs** - Manage draft status for stacked PRs
102
+ - **pr-stack** - Track stacked PR state across sessions
103
+ - **auto-release** - Set up semantic versioning and automated releases
104
+
105
+ **Meta**
106
+ - **craft-skill** - Create new skills following best practices (includes testing methodology)
107
+ - **onboard** - Introduction to the skills system
108
+
109
+ ## Philosophy
110
+
111
+ - **Test-Driven Development** - Write tests first, always
112
+ - **Systematic over ad-hoc** - Process over guessing
113
+ - **Complexity reduction** - Simplicity as primary goal
114
+ - **Evidence over claims** - Verify before declaring success
115
+
116
+ ## Updating
117
+
118
+ Skills update automatically when you update the plugin:
119
+
120
+ ```bash
121
+ /plugin update buildwithjpegg
122
+ ```
123
+
124
+ ## Acknowledgment
125
+
126
+ buildwithjpegg is based on [superpowers](https://github.com/obra/superpowers) by Jesse Vincent, licensed under the MIT License. See [LICENSE](LICENSE) for details.
127
+
128
+ ## License
129
+
130
+ MIT License - see [LICENSE](LICENSE) for details.
131
+
132
+ ## Support
133
+
134
+ - **Issues**: https://github.com/jpeggdev/buildwithjpegg/issues
@@ -0,0 +1,7 @@
1
+ # Release Notes
2
+
3
+ ## v1.0.0
4
+
5
+ Initial release of buildwithjpegg, a development workflow skills plugin for Claude Code.
6
+
7
+ Based on superpowers v4.3.0 by Jesse Vincent.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: code-reviewer
3
+ description: |
4
+ Use this agent when a major project step has been completed and needs to be reviewed against the original plan and coding standards. Examples: <example>Context: The user is creating a code-review agent that should be called after a logical chunk of code is written. user: "I've finished implementing the user authentication system as outlined in step 3 of our plan" assistant: "Great work! Now let me use the code-reviewer agent to review the implementation against our plan and coding standards" <commentary>Since a major project step has been completed, use the code-reviewer agent to validate the work against the plan and identify any issues.</commentary></example> <example>Context: User has completed a significant feature implementation. user: "The API endpoints for the task management system are now complete - that covers step 2 from our architecture document" assistant: "Excellent! Let me have the code-reviewer agent examine this implementation to ensure it aligns with our plan and follows best practices" <commentary>A numbered step from the planning document has been completed, so the code-reviewer agent should review the work.</commentary></example>
5
+ model: inherit
6
+ ---
7
+
8
+ You are a Senior Code Reviewer with expertise in software architecture, design patterns, and best practices. Your role is to review completed project steps against original plans and ensure code quality standards are met.
9
+
10
+ When reviewing completed work, you will:
11
+
12
+ 1. **Plan Alignment Analysis**:
13
+ - Compare the implementation against the original planning document or step description
14
+ - Identify any deviations from the planned approach, architecture, or requirements
15
+ - Assess whether deviations are justified improvements or problematic departures
16
+ - Verify that all planned functionality has been implemented
17
+
18
+ 2. **Code Quality Assessment**:
19
+ - Review code for adherence to established patterns and conventions
20
+ - Check for proper error handling, type safety, and defensive programming
21
+ - Evaluate code organization, naming conventions, and maintainability
22
+ - Assess test coverage and quality of test implementations
23
+ - Look for potential security vulnerabilities or performance issues
24
+
25
+ 3. **Architecture and Design Review**:
26
+ - Ensure the implementation follows SOLID principles and established architectural patterns
27
+ - Check for proper separation of concerns and loose coupling
28
+ - Verify that the code integrates well with existing systems
29
+ - Assess scalability and extensibility considerations
30
+
31
+ 4. **Documentation and Standards**:
32
+ - Verify that code includes appropriate comments and documentation
33
+ - Check that file headers, function documentation, and inline comments are present and accurate
34
+ - Ensure adherence to project-specific coding standards and conventions
35
+
36
+ 5. **Issue Identification and Recommendations**:
37
+ - Clearly categorize issues as: Critical (must fix), Important (should fix), or Suggestions (nice to have)
38
+ - For each issue, provide specific examples and actionable recommendations
39
+ - When you identify plan deviations, explain whether they're problematic or beneficial
40
+ - Suggest specific improvements with code examples when helpful
41
+
42
+ 6. **Communication Protocol**:
43
+ - If you find significant deviations from the plan, ask the coding agent to review and confirm the changes
44
+ - If you identify issues with the original plan itself, recommend plan updates
45
+ - For implementation problems, provide clear guidance on fixes needed
46
+ - Always acknowledge what was done well before highlighting issues
47
+
48
+ Your output should be structured, actionable, and focused on helping maintain high code quality while ensuring project goals are met. Be thorough but concise, and always provide constructive feedback that helps improve both the current implementation and future development practices.
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores requirements and design before implementation."
3
+ disable-model-invocation: true
4
+ ---
5
+
6
+ Invoke the jpegg:evaluate skill and follow it exactly as presented to you
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Execute plan in batches with review checkpoints
3
+ disable-model-invocation: true
4
+ ---
5
+
6
+ Invoke the jpegg:build skill and follow it exactly as presented to you
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Create detailed implementation plan with bite-sized tasks
3
+ disable-model-invocation: true
4
+ ---
5
+
6
+ Invoke the jpegg:blueprint skill and follow it exactly as presented to you
@@ -0,0 +1,16 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup|resume|clear|compact",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh",
10
+ "async": false
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,43 @@
1
+ : << 'CMDBLOCK'
2
+ @echo off
3
+ REM ============================================================================
4
+ REM DEPRECATED: This polyglot wrapper is no longer used as of Claude Code 2.1.x
5
+ REM ============================================================================
6
+ REM
7
+ REM Claude Code 2.1.x changed the Windows execution model for hooks:
8
+ REM
9
+ REM Before (2.0.x): Hooks ran with shell:true, using the system default shell.
10
+ REM This wrapper provided cross-platform compatibility by
11
+ REM being both a valid .cmd file (Windows) and bash script.
12
+ REM
13
+ REM After (2.1.x): Claude Code now auto-detects .sh files in hook commands
14
+ REM and prepends "bash " on Windows. This broke the wrapper
15
+ REM because the command:
16
+ REM "run-hook.cmd" session-start.sh
17
+ REM became:
18
+ REM bash "run-hook.cmd" session-start.sh
19
+ REM ...and bash cannot execute a .cmd file.
20
+ REM
21
+ REM The fix: hooks.json now calls session-start.sh directly. Claude Code 2.1.x
22
+ REM handles the bash invocation automatically on Windows.
23
+ REM
24
+ REM This file is kept for reference and potential backward compatibility.
25
+ REM ============================================================================
26
+ REM
27
+ REM Original purpose: Polyglot wrapper to run .sh scripts cross-platform
28
+ REM Usage: run-hook.cmd <script-name> [args...]
29
+ REM The script should be in the same directory as this wrapper
30
+
31
+ if "%~1"=="" (
32
+ echo run-hook.cmd: missing script name >&2
33
+ exit /b 1
34
+ )
35
+ "C:\Program Files\Git\bin\bash.exe" -l "%~dp0%~1" %2 %3 %4 %5 %6 %7 %8 %9
36
+ exit /b
37
+ CMDBLOCK
38
+
39
+ # Unix shell runs from here
40
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
41
+ SCRIPT_NAME="$1"
42
+ shift
43
+ "${SCRIPT_DIR}/${SCRIPT_NAME}" "$@"
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env bash
2
+ # SessionStart hook for buildwithjpegg plugin
3
+
4
+ set -euo pipefail
5
+
6
+ # Determine plugin root directory
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
8
+ PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
9
+
10
+ # Check if legacy skills directory exists and build warning
11
+ warning_message=""
12
+ legacy_skills_dir="${HOME}/.config/buildwithjpegg/skills"
13
+ if [ -d "$legacy_skills_dir" ]; then
14
+ warning_message="\n\n<important-reminder>IN YOUR FIRST REPLY AFTER SEEING THIS MESSAGE YOU MUST TELL THE USER: **WARNING:** buildwithjpegg now uses Claude Code's skills system. Custom skills in ~/.config/buildwithjpegg/skills will not be read. Move custom skills to ~/.claude/skills instead. To make this message go away, remove ~/.config/buildwithjpegg/skills</important-reminder>"
15
+ fi
16
+
17
+ # Read onboard content
18
+ onboard_content=$(cat "${PLUGIN_ROOT}/skills/onboard/SKILL.md" 2>&1 || echo "Error reading onboard skill")
19
+
20
+ # Escape string for JSON embedding using bash parameter substitution.
21
+ # Each ${s//old/new} is a single C-level pass - orders of magnitude
22
+ # faster than the character-by-character loop this replaces.
23
+ escape_for_json() {
24
+ local s="$1"
25
+ s="${s//\\/\\\\}"
26
+ s="${s//\"/\\\"}"
27
+ s="${s//$'\n'/\\n}"
28
+ s="${s//$'\r'/\\r}"
29
+ s="${s//$'\t'/\\t}"
30
+ printf '%s' "$s"
31
+ }
32
+
33
+ onboard_escaped=$(escape_for_json "$onboard_content")
34
+ warning_escaped=$(escape_for_json "$warning_message")
35
+
36
+ # Output context injection as JSON
37
+ cat <<EOF
38
+ {
39
+ "hookSpecificOutput": {
40
+ "hookEventName": "SessionStart",
41
+ "additionalContext": "<EXTREMELY_IMPORTANT>\nYou have buildwithjpegg.\n\n**Below is the full content of your 'jpegg:onboard' skill - your introduction to using skills. For all other skills, use the 'Skill' tool:**\n\n${onboard_escaped}\n\n${warning_escaped}\n</EXTREMELY_IMPORTANT>"
42
+ }
43
+ }
44
+ EOF
45
+
46
+ exit 0