Skip to content

feat: add 4 mattpocock-inspired skills + tdd horizontal-slicing boost - #21

Merged
ether-moon merged 3 commits into
mainfrom
analyze-mattpocock
May 6, 2026
Merged

feat: add 4 mattpocock-inspired skills + tdd horizontal-slicing boost#21
ether-moon merged 3 commits into
mainfrom
analyze-mattpocock

Conversation

@ether-moon

@ether-moon ether-moon commented May 4, 2026

Copy link
Copy Markdown
Owner

Summary

Adds four new skills inspired by mattpocock/skills (MIT) and boosts developing-test-first with a Horizontal Slicing anti-pattern.

Changes

New skills

  • grilling-plans — Adversarial pre-implementation interrogation. Walks the decision tree one question at a time with recommended answers, prefers codebase exploration over questions, surfaces contradictions between stated intent and actual code.
  • building-shared-vocabulary — Maintains a project's domain glossary in CONTEXT.md and architecture decision records in docs/adr/ as living artifacts. Lazy file creation, inline updates, three-criterion ADR gate (hard-to-reverse + surprising-without-context + real trade-off).
  • zooming-out-on-code — Draws a higher-level system map of unfamiliar internal/project code in domain vocabulary (responsibility / callers / dependencies / siblings).
  • improving-architecture — Surfaces deep-module refactor candidates using Ousterhout's depth/seam framing, applies the deletion test, and hands off to grilling-plans for the chosen candidate's design. Includes a Design It Twice parallel sub-agent pattern.

Existing skill boost

  • developing-test-first — New "Anti-Pattern: Horizontal Slicing" section forbidding the bulk RED→RED→RED→...→GREEN→GREEN→GREEN pattern that produces tests of imagined rather than actual behavior.

New slash commands

  • /skill-set:plan:grillgrilling-plans
  • /skill-set:code:zoom-outzooming-out-on-code

Meta

  • Version bump: 1.11.1 → 1.12.0
  • Attribution: README "Acknowledgements" + CHANGELOG "inspired by" notes
  • 18 files changed, 1340 insertions

Review history

This branch went through three audit rounds before submission:

  1. Internal skill-set:creating-skills audit (4 parallel subagents) — caught voodoo constants, trigger over-breadth, missing TOC, dot-block token tax, missing recursion terminator. All 11 OBVIOUS items auto-fixed; 4 AMBIGUOUS groups user-approved (CONTEXT.md fallback wording, dot-block ASCII compression, worked examples, minor wording).
  2. Original-vs-adapted feature parity check — added missing pieces (Stress-Test Rule 6 in grilling-plans, dependency categorization in improving-architecture, Design It Twice pattern, Example dialogue in CONTEXT.md format, lighter ADR template).
  3. External skill-creator:skill-creator audit (4 parallel subagents) — flagged additional voodoo constants, MUST-without-why framing, gating-rather-than-pushy descriptions. All addressed in the B-group fixes. Evals/scripts deferred for skill-set-wide consistency.

Test plan

  • In a fresh session, /skill-set:plan:grill triggers grilling-plans with the new pushy description
  • In a fresh session, /skill-set:code:zoom-out triggers zooming-out-on-code
  • Phrases like "challenge this plan", "내 계획 부숴봐", "stress test this design" trigger grilling-plans without simplify competing
  • Phrases like "find refactor opportunities", "ball-of-mud area", "this code is a mess" trigger improving-architecture
  • In a project without CONTEXT.md, all three CONTEXT.md-aware skills (grilling-plans, zooming-out-on-code, improving-architecture) gracefully fall back to inferring vocabulary
  • developing-test-first still triggers on "TDD", "red/green", and shows the new Horizontal Slicing section
  • CodeRabbit review surfaces no significant issues; CI green

Summary by CodeRabbit

Release Notes v1.12.0

  • New Features

    • Added four new skills for adversarial plan review, domain vocabulary management, code navigation, and architecture improvement
    • Added /skill-set:plan:grill and /skill-set:code:zoom-out slash commands
  • Documentation

    • Enhanced test-first skill with anti-pattern guidance on horizontal slicing
    • Added comprehensive reference documentation for all new skills
    • Expanded README with acknowledgements section

…ture

Adds four new skills inspired by mattpocock/skills (MIT) and boosts
developing-test-first with a Horizontal Slicing anti-pattern.

New skills:
- grilling-plans: adversarial pre-implementation interrogation, decision-tree
  walk with recommended answers, codebase-exploration-first
- building-shared-vocabulary: maintains domain glossary (CONTEXT.md) and
  ADRs as living artifacts with lazy creation and a 3-criterion ADR gate
- zooming-out-on-code: system-level map of unfamiliar code in the project's
  domain vocabulary (responsibility / callers / dependencies / siblings)
- improving-architecture: surfaces deep-module refactor candidates using
  Ousterhout's depth/seam framing and the deletion test

New slash commands:
- /skill-set:plan:grill
- /skill-set:code:zoom-out

Improves developing-test-first with Horizontal Slicing anti-pattern section
forbidding bulk-write tests-first then implementations-after.

Bumps version 1.11.1 to 1.12.0. Attribution in README and CHANGELOG.
@coderabbitai

coderabbitai Bot commented May 4, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@ether-moon has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 47 minutes and 44 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bb0c88c9-6f8e-48e5-8928-de603ddaf74a

📥 Commits

Reviewing files that changed from the base of the PR and between d0f7e4b and 7c38398.

📒 Files selected for processing (5)
  • plugins/skill-set/skills/building-shared-vocabulary/SKILL.md
  • plugins/skill-set/skills/grilling-plans/SKILL.md
  • plugins/skill-set/skills/improving-architecture/SKILL.md
  • plugins/skill-set/skills/improving-architecture/reference/deepening.md
  • plugins/skill-set/skills/zooming-out-on-code/SKILL.md
📝 Walkthrough

Walkthrough

Release 1.12.0 adds four new skills (grilling-plans, building-shared-vocabulary, improving-architecture, zooming-out-on-code), corresponding slash commands, and supporting reference documentation. Plugin version is bumped from 1.11.1 to 1.12.0, and the existing developing-test-first skill is enhanced with an anti-pattern section.

Changes

Release 1.12.0: Skill & Command Documentation

Layer / File(s) Summary
Version & Release Metadata
plugins/skill-set/.claude-plugin/plugin.json, CHANGELOG.md
Plugin version bumped to 1.12.0; changelog entry documents four new skills, two slash commands, and developing-test-first enhancement.
Skill Documentation
plugins/skill-set/skills/grilling-plans/SKILL.md, plugins/skill-set/skills/building-shared-vocabulary/SKILL.md, plugins/skill-set/skills/improving-architecture/SKILL.md, plugins/skill-set/skills/zooming-out-on-code/SKILL.md
Four new skill definitions covering adversarial plan review, domain glossary maintenance, architectural deepening, and codebase orientation, each with usage rules, process flows, and troubleshooting guidance.
Skill Reference Documentation
plugins/skill-set/skills/grilling-plans/reference/*, plugins/skill-set/skills/building-shared-vocabulary/reference/*, plugins/skill-set/skills/improving-architecture/reference/*
Supporting reference materials: decision-tree walk, codebase cross-reference, ADR/CONTEXT formats, deep modules concepts, deletion test, deepening strategy, and interface design patterns.
Existing Skill Enhancement
plugins/skill-set/skills/developing-test-first/SKILL.md
Anti-pattern section added ("Horizontal Slicing") contrasting incorrect bulk-written tests with correct vertical slicing and enforcing one-test-per-cycle discipline.
Command Documentation
plugins/skill-set/commands/code/zoom-out.md, plugins/skill-set/commands/plan/grill.md
Two new command documents describing slash-command invocation of zooming-out-on-code and grilling-plans skills with usage guidance and expected outputs.
Public Integration & Discovery
README.md
Slash commands list expanded; new "Acknowledgements" section credits inspiration from external skills repository.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 Four new skills now hop into play,
From grilling plans to deep architecture's way,
With vocabulary shared and modules made lean,
The smartest code-walking you've ever seen,
Version 1.12—let the refactoring begin! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main additions: four new mattpocock-inspired skills and an enhancement to the test-first skill.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch analyze-mattpocock

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 47 minutes and 44 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
plugins/skill-set/skills/developing-test-first/SKILL.md (1)

1-207: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

File slightly exceeds the 200-line limit.

The file is currently 207 lines, just over the 200-line progressive disclosure guideline. Consider moving the "Common Rationalizations" table (currently referenced at line 157) or the "When Stuck" table to the existing reference/anti-patterns.md file to stay within the limit. As per coding guidelines, "All SKILL.md files must stay under 200 lines using progressive disclosure pattern, with detailed content in separate reference files."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/developing-test-first/SKILL.md` around lines 1 -
207, The SKILL.md exceeds the 200-line limit; move the "Common Rationalizations"
section (the paragraph and any tables referenced at or around the line
mentioning reference/anti-patterns.md) and/or the "When Stuck" table out of
SKILL.md into reference/anti-patterns.md, replace their content in SKILL.md with
a short pointer like "See reference/anti-patterns.md for details", and ensure
headings or cross-reference text (e.g., "Common Rationalizations", "When Stuck",
and the existing reference link `reference/anti-patterns.md`) remain intact so
readers can find the migrated content.
plugins/skill-set/skills/improving-architecture/SKILL.md (1)

6-166: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Add required packages and availability verification to this SKILL.

This SKILL.md doesn’t list required packages or how availability is verified in the execution environment. Please add a short section for that. As per coding guidelines, “List required packages in SKILL.md and verify they are available in the code execution environment.”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/improving-architecture/SKILL.md` around lines 6 -
166, The SKILL.md (“Improving Architecture”) is missing a requirements section;
add a short "Required packages and availability" section under the Overview (or
after Glossary) that lists required runtime packages (names and minimal
versions) and a concise availability verification procedure: describe how the
execution environment should check for those packages (e.g., verify via the
package manager or attempt to import/require at startup and fail with a clear
message), state expected exit/fallback behavior if a package is missing, and
include any environment variables or feature flags used to toggle the skill;
reference the SKILL.md headings ("Overview", "Process") so reviewers can place
the new section consistently.
🧹 Nitpick comments (6)
plugins/skill-set/skills/zooming-out-on-code/SKILL.md (3)

50-70: ⚡ Quick win

Add language identifier to output template code block.

The code block at line 50 lacks a language identifier. Adding markdown will improve rendering and satisfy linting rules.

📝 Proposed fix
 ## Output template
 
-```
+```markdown
 **<Module name in domain vocabulary>**
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/zooming-out-on-code/SKILL.md` around lines 50 - 70,
The fenced code block that contains the module template (the block starting with
"**<Module name in domain vocabulary>**" in SKILL.md) is missing a language
identifier; update the opening fence from ``` to ```markdown so the snippet is
rendered as markdown and passes linters—locate the block in
plugins/skill-set/skills/zooming-out-on-code/SKILL.md (the triple-backtick fence
immediately before the template) and add the word "markdown" after the
backticks.

40-40: ⚡ Quick win

Clarify LSP availability assumptions.

Line 40 mentions "use LSP findReferences if an LSP is available for the language" but doesn't clarify whether LSP tools are expected to be present or how to fall back if unavailable. Consider adding a note in the Troubleshooting section about what to do when LSP isn't available.

💡 Suggested addition to Troubleshooting

Add a row to the troubleshooting table:

| LSP not available for the language | Manual grep/search needed | Use `rg` or `grep` to search for references to the public API name |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/zooming-out-on-code/SKILL.md` at line 40, The doc
mentions "use `LSP findReferences` if an LSP is available for the language" but
doesn't say what to do if an LSP isn't present; update SKILL.md
(zooming-out-on-code) Troubleshooting to document the fallback: add a table row
or short note explaining "LSP not available for the language" and prescribe
using manual search tools like `rg`/`grep` or editor-wide search to find
references to the public API name, and mention that `LSP findReferences` is
optional only when an LSP is installed.

76-100: ⚡ Quick win

Add language identifier to example code block.

The code block at line 76 lacks a language identifier. Adding markdown will improve rendering and satisfy linting rules.

📝 Proposed fix
 User asks about `src/orders/intake/validate.ts`.
 
-```
+```markdown
 **Order Intake — Validation**
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/zooming-out-on-code/SKILL.md` around lines 76 - 100,
The fenced code block that begins with the "Order Intake — Validation" header in
SKILL.md is missing a language identifier; update the opening fence from ``` to
```markdown so the block becomes a markdown code block (i.e., add "markdown"
after the first triple backticks around the block that starts with "**Order
Intake — Validation**") to satisfy linting and improve rendering.
plugins/skill-set/skills/improving-architecture/reference/deep-modules.md (1)

44-50: ⚡ Quick win

Add language identifier to depth diagram.

The ASCII diagram at line 44 lacks a language identifier. Adding text will improve rendering and satisfy linting rules.

📝 Proposed fix
 The ratio between leverage gained and interface complexity carried.
 
-```
+```text
 deep:    [ ============= IMPLEMENTATION ============= ]
          [   interface   ]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/improving-architecture/reference/deep-modules.md`
around lines 44 - 50, The fenced ASCII diagram using the lines that start with
"deep:" and "shallow:" needs a language identifier to satisfy linting; update
the opening triple-backtick before the diagram to include "text" (i.e., change
``` to ```text) so the block containing the "deep:    [ =============
IMPLEMENTATION ============= ]" and "shallow: [ implementation ]" lines is
treated as plain text.
plugins/skill-set/skills/grilling-plans/SKILL.md (2)

118-130: ⚡ Quick win

Add language identifier to process flow diagram.

The process flow pseudocode at line 118 lacks a language identifier. Adding text will improve rendering and satisfy linting rules.

📝 Proposed fix
 ## Process Flow
 
-```
+```text
 receive plan
   → Domain Awareness (read CONTEXT.md / ADRs / code)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/grilling-plans/SKILL.md` around lines 118 - 130, The
fenced pseudocode block beginning with "receive plan" in SKILL.md is missing a
language identifier; update the opening triple-backtick to include "text" (i.e.,
```text) so the process flow renders correctly and satisfies linting; locate the
block containing the "receive plan" flow and change its opening fence
accordingly.

59-65: ⚡ Quick win

Add language identifiers to example code blocks.

Multiple example code blocks (lines 59-65, 73-77, 85-89, 95-99, 107-112) lack language identifiers. Adding text or markdown will improve rendering and satisfy linting rules.

📝 Proposed fix for first example (apply similar pattern to others)
 ### Rule 2 — Provide a Recommended Answer With Every Question
 
 Every question must include the model's own recommendation, with reasoning. This forces commitment instead of polite hedging.
 
-```
+```text
 WRONG: "What should happen when the cache is empty?"
 RIGHT: "What should happen when the cache is empty? My recommendation:

Also applies to: 73-77, 85-89, 95-99, 107-112

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/grilling-plans/SKILL.md` around lines 59 - 65, The
fenced example code blocks in SKILL.md are missing language identifiers (e.g.,
the blocks showing WRONG/RIGHT example text); update each of those fenced code
blocks to include a language tag like ```text or ```markdown so the examples
render correctly and satisfy linters—specifically modify the example block that
begins with WRONG: "What should happen when the cache is empty?" and apply the
same change to the other similar example blocks in the file (the ones showing
WRONG/RIGHT pairs) to ensure consistent formatting.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/skill-set/skills/improving-architecture/reference/deepening.md`:
- Around line 45-50: The fenced code block containing the four lines starting
with "Pure computation? → Category 1. Just merge." should include a language tag
to satisfy markdown linting; update the opening fence from ``` to ```text (i.e.,
add "text" after the backticks) so the block is explicitly marked as text.

In `@plugins/skill-set/skills/improving-architecture/SKILL.md`:
- Around line 70-79: The fenced code blocks showing the examples (the block
starting with "**N. <Candidate name in domain vocabulary>**", the block starting
with "**1. Order Intake validation cluster**", and the block beginning with
"orient (read CONTEXT.md and relevant ADRs)") lack a language token; update each
opening triple-backtick to include a language identifier (e.g., change ``` to
```text) so the markdown linter is satisfied and rendering is explicit.
- Line 62: The reference to the MCP tool `Agent` must use the repository's
server-qualified naming convention; update the text that says "dispatch an
`Explore` agent (`Agent` tool with `subagent_type=Explore`)" to use the fully
qualified tool name (e.g., replace `Agent` with the server-prefixed form like
`ServerName:Agent`) and ensure any inline code or example that mentions the tool
follows that same pattern; keep the `Explore` subagent_type as-is but show it in
the context of the server-qualified tool (e.g., `ServerName:Agent` with
`subagent_type=Explore`) and update the related reference to
`superpowers:dispatching-parallel-agents` if it includes unqualified tool
mentions.
- Line 3: The SKILL.md description contains a Korean trigger phrase "리팩토링 거리
찾아"; replace that phrase with an English equivalent (e.g., "find refactor
opportunities" or "find refactoring opportunities") or move the Korean phrase
into a localized documentation file, keeping the default SKILL.md content
English; update the trigger list inside the description paragraph (the string
after "phrases like") to remove the Korean token and use the chosen English
phrase so the repository policy is respected.
- Around line 46-149: Convert each main phase heading ("1. Orient", "2.
Explore", "3. Present candidates", "4. Classify dependencies", "5. (Optional)
Design It Twice", "6. Hand off") and the "Process Flow" into checklist-style
steps by inserting explicit markdown task items (- [ ] ...) that enumerate the
sequential actions to perform; for each phase (e.g., "Present candidates") add a
top-level checklist item and nested checklist items for its substeps (e.g., read
CONTEXT.md, run deletion test, prepare numbered candidates, ask user), ensure
the filled example stays as an example but add a checklist prompting the author
to fill Files/Problem/Solution/Locality gain/Leverage gain/Test impact, and add
a final checklist in "Process Flow" that reflects the decision branches (user
picks one? yes/no → next steps) so reviewers can copy/paste and tick progress
while following the existing prose in SKILL.md.

---

Outside diff comments:
In `@plugins/skill-set/skills/developing-test-first/SKILL.md`:
- Around line 1-207: The SKILL.md exceeds the 200-line limit; move the "Common
Rationalizations" section (the paragraph and any tables referenced at or around
the line mentioning reference/anti-patterns.md) and/or the "When Stuck" table
out of SKILL.md into reference/anti-patterns.md, replace their content in
SKILL.md with a short pointer like "See reference/anti-patterns.md for details",
and ensure headings or cross-reference text (e.g., "Common Rationalizations",
"When Stuck", and the existing reference link `reference/anti-patterns.md`)
remain intact so readers can find the migrated content.

In `@plugins/skill-set/skills/improving-architecture/SKILL.md`:
- Around line 6-166: The SKILL.md (“Improving Architecture”) is missing a
requirements section; add a short "Required packages and availability" section
under the Overview (or after Glossary) that lists required runtime packages
(names and minimal versions) and a concise availability verification procedure:
describe how the execution environment should check for those packages (e.g.,
verify via the package manager or attempt to import/require at startup and fail
with a clear message), state expected exit/fallback behavior if a package is
missing, and include any environment variables or feature flags used to toggle
the skill; reference the SKILL.md headings ("Overview", "Process") so reviewers
can place the new section consistently.

---

Nitpick comments:
In `@plugins/skill-set/skills/grilling-plans/SKILL.md`:
- Around line 118-130: The fenced pseudocode block beginning with "receive plan"
in SKILL.md is missing a language identifier; update the opening triple-backtick
to include "text" (i.e., ```text) so the process flow renders correctly and
satisfies linting; locate the block containing the "receive plan" flow and
change its opening fence accordingly.
- Around line 59-65: The fenced example code blocks in SKILL.md are missing
language identifiers (e.g., the blocks showing WRONG/RIGHT example text); update
each of those fenced code blocks to include a language tag like ```text or
```markdown so the examples render correctly and satisfy linters—specifically
modify the example block that begins with WRONG: "What should happen when the
cache is empty?" and apply the same change to the other similar example blocks
in the file (the ones showing WRONG/RIGHT pairs) to ensure consistent
formatting.

In `@plugins/skill-set/skills/improving-architecture/reference/deep-modules.md`:
- Around line 44-50: The fenced ASCII diagram using the lines that start with
"deep:" and "shallow:" needs a language identifier to satisfy linting; update
the opening triple-backtick before the diagram to include "text" (i.e., change
``` to ```text) so the block containing the "deep:    [ =============
IMPLEMENTATION ============= ]" and "shallow: [ implementation ]" lines is
treated as plain text.

In `@plugins/skill-set/skills/zooming-out-on-code/SKILL.md`:
- Around line 50-70: The fenced code block that contains the module template
(the block starting with "**<Module name in domain vocabulary>**" in SKILL.md)
is missing a language identifier; update the opening fence from ``` to
```markdown so the snippet is rendered as markdown and passes linters—locate the
block in plugins/skill-set/skills/zooming-out-on-code/SKILL.md (the
triple-backtick fence immediately before the template) and add the word
"markdown" after the backticks.
- Line 40: The doc mentions "use `LSP findReferences` if an LSP is available for
the language" but doesn't say what to do if an LSP isn't present; update
SKILL.md (zooming-out-on-code) Troubleshooting to document the fallback: add a
table row or short note explaining "LSP not available for the language" and
prescribe using manual search tools like `rg`/`grep` or editor-wide search to
find references to the public API name, and mention that `LSP findReferences` is
optional only when an LSP is installed.
- Around line 76-100: The fenced code block that begins with the "Order Intake —
Validation" header in SKILL.md is missing a language identifier; update the
opening fence from ``` to ```markdown so the block becomes a markdown code block
(i.e., add "markdown" after the first triple backticks around the block that
starts with "**Order Intake — Validation**") to satisfy linting and improve
rendering.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f7cf2556-6ac2-4fb2-b55c-0fe89bdd9d7c

📥 Commits

Reviewing files that changed from the base of the PR and between 3aa08b0 and d0f7e4b.

📒 Files selected for processing (18)
  • CHANGELOG.md
  • README.md
  • plugins/skill-set/.claude-plugin/plugin.json
  • plugins/skill-set/commands/code/zoom-out.md
  • plugins/skill-set/commands/plan/grill.md
  • plugins/skill-set/skills/building-shared-vocabulary/SKILL.md
  • plugins/skill-set/skills/building-shared-vocabulary/reference/adr-format.md
  • plugins/skill-set/skills/building-shared-vocabulary/reference/context-format.md
  • plugins/skill-set/skills/developing-test-first/SKILL.md
  • plugins/skill-set/skills/grilling-plans/SKILL.md
  • plugins/skill-set/skills/grilling-plans/reference/codebase-cross-reference.md
  • plugins/skill-set/skills/grilling-plans/reference/decision-tree-walk.md
  • plugins/skill-set/skills/improving-architecture/SKILL.md
  • plugins/skill-set/skills/improving-architecture/reference/deep-modules.md
  • plugins/skill-set/skills/improving-architecture/reference/deepening.md
  • plugins/skill-set/skills/improving-architecture/reference/deletion-test.md
  • plugins/skill-set/skills/improving-architecture/reference/interface-design.md
  • plugins/skill-set/skills/zooming-out-on-code/SKILL.md

Comment thread plugins/skill-set/skills/improving-architecture/reference/deepening.md Outdated
Comment thread plugins/skill-set/skills/improving-architecture/SKILL.md Outdated
Comment on lines +46 to +149
## Process

### 1. Orient

If `CONTEXT.md` and `docs/adr/` exist (per `building-shared-vocabulary`), read them first — `CONTEXT.md` gives names to good seams, ADRs record decisions to not re-litigate. If absent, infer domain vocabulary from package/module names, test descriptions, and recent commit messages, and proceed.

### 2. Explore

Walk the codebase looking for friction. Don't apply rigid heuristics — observe organically and note where understanding is hard:

- Where does understanding one concept require bouncing between many small files?
- Where is a module's interface nearly as complex as its implementation? (shallow)
- Where have pure functions been extracted just for testability, while the real bugs hide in *how* they're called? (no locality)
- Where do tightly-coupled modules leak across their seams?
- Which parts are untested or hard to test through their current interface?

For broader sweeps, dispatch an `Explore` agent (`Agent` tool with `subagent_type=Explore`) to walk a directory or feature area in parallel — see `superpowers:dispatching-parallel-agents`.

Apply the **deletion test** to anything you suspect is shallow: imagine deleting it. If complexity vanishes, it was a pass-through. If complexity reappears across N callers, it was earning its keep. Full procedure: `reference/deletion-test.md`.

### 3. Present candidates

Number them. For each:

```
**N. <Candidate name in domain vocabulary>**

- **Files:** <paths>
- **Problem:** <why the current architecture causes friction>
- **Solution:** <plain English description of what would change>
- **Locality gain:** <what maintenance becomes easier>
- **Leverage gain:** <what callers stop having to think about>
- **Test impact:** <which tests survive, which become possible>
```

**Do not propose specific interfaces yet.** That belongs to the next phase.

**Vocabulary discipline:** Use `CONTEXT.md` terms for domain concepts ("the Order intake module") and the glossary above for architecture concepts ("a deep seam over the rate limiter"). Do not invent new architectural vocabulary; use the canonical terms.

**Filled example:**

```
**1. Order Intake validation cluster**

- **Files:** src/orders/intake/promotion-check.ts, inventory-check.ts,
credit-check.ts, route.ts (calls all three)
- **Problem:** Three shallow validators each export a single function;
every caller has to remember the right ordering and aggregate errors
manually. Two of three are also called by the admin Manual Order tool,
which currently re-aggregates errors with a different shape.
- **Solution:** Collapse the three validators behind a single
`validateOrder(order) → ValidationResult` interface that owns the
ordering, the aggregation, and the error shape.
- **Locality gain:** Adding a new check (e.g., fraud scoring) becomes
one edit inside the validation module; today it is three.
- **Leverage gain:** Both the HTTP route and the admin tool stop
re-implementing aggregation; both consume the same `ValidationResult`.
- **Test impact:** Existing per-validator unit tests can stay as
internal helpers; new tests assert against `validateOrder` outcomes —
closer to user-observable behavior.
```

**ADR conflicts:** If a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant reopening the decision. Mark it: _"Contradicts ADR-0007 — but worth reopening because…"_. Do not list every theoretical refactor an ADR forbids.

Ask the user: "Which of these would you like to explore?"

### 4. Classify dependencies

Before designing a new interface, classify the candidate's dependencies (see `reference/deepening.md`):

1. **In-process** — pure computation; merge and test directly
2. **Local-substitutable** — has a local stand-in (PGLite, in-memory FS); use it
3. **Remote but owned** — your services across a network; define a port with 2+ adapters
4. **True external** — third-party (Stripe, Twilio); inject port, mock in tests

The category determines the seam strategy and what tests look like.

### 5. (Optional) Design It Twice

If interface shape is non-obvious, run a parallel sub-agent design generation pass — see `reference/interface-design.md`. Spawn 3+ agents with radically different design constraints (minimal interface / maximum flexibility / optimize-for-common-caller / ports-and-adapters), present the results sequentially, then commit to one.

Skip this step when the right interface is already obvious. Use it when the user is unsure or when the candidate's interface shape would set a long-term direction.

### 6. Hand off

Hand off to `grilling-plans` to interrogate the chosen design. Do not jump to writing implementation plans directly — the candidate is still under-specified, and grilling will surface what is unclear.

After grilling, ADRs and `CONTEXT.md` updates are owned by `building-shared-vocabulary` — this skill does not write them.

## Process Flow

```
orient (read CONTEXT.md and relevant ADRs)
→ explore codebase for friction (optionally via Explore subagents)
→ apply deletion test to suspect shallow modules
→ present numbered candidates with locality / leverage / test impact
→ user picks one? no → end (note for later)
yes → classify dependencies
(in-process / local-sub / remote-owned / true-external)
→ interface shape obvious? yes → hand off to grilling-plans
no → Design It Twice
→ hand off to grilling-plans
```

@coderabbitai coderabbitai Bot May 4, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Convert process steps into checklist-friendly instructions.

The process is clear, but it isn’t presented as copyable checklists for multi-stage execution. Please add explicit checklist blocks (- [ ]) for the main phases. As per coding guidelines, “Break complex operations into sequential steps with checklists Claude can copy and track progress through.”

🧰 Tools
🪛 LanguageTool

[style] ~60-~60: To elevate your writing, try using a synonym here.
Context: ...ir seams? - Which parts are untested or hard to test through their current interface...

(HARD_TO)


[style] ~108-~108: Using “real” as an adverb is considered informal. Consider using “really” or “very”.
Context: ...R, only surface it when the friction is real enough to warrant reopening the decisio...

(REAL_REALLY)

🪛 markdownlint-cli2 (0.22.1)

[warning] 70-70: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 87-87: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 137-137: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/improving-architecture/SKILL.md` around lines 46 -
149, Convert each main phase heading ("1. Orient", "2. Explore", "3. Present
candidates", "4. Classify dependencies", "5. (Optional) Design It Twice", "6.
Hand off") and the "Process Flow" into checklist-style steps by inserting
explicit markdown task items (- [ ] ...) that enumerate the sequential actions
to perform; for each phase (e.g., "Present candidates") add a top-level
checklist item and nested checklist items for its substeps (e.g., read
CONTEXT.md, run deletion test, prepare numbered candidates, ask user), ensure
the filled example stays as an example but add a checklist prompting the author
to fill Files/Problem/Solution/Locality gain/Leverage gain/Test impact, and add
a final checklist in "Process Flow" that reflects the decision branches (user
picks one? yes/no → next steps) so reviewers can copy/paste and tick progress
while following the existing prose in SKILL.md.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skipping this suggestion. The numbered ### N. Phase form is consistent with other skills in this repo (shipping-pr/SKILL.md, creating-skills/SKILL.md, developing-test-first/SKILL.md). Switching to checklists in one skill would diverge from the project's authoring style; if desired, it should be a project-wide stylistic decision applied uniformly.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ether-moon, that's a fair point — consistency within a project's authoring style takes precedence over per-file deviations. Acknowledged, and I'll keep this convention in mind for future reviews of skills in this repo.


✏️ Learnings added
Learnt from: ether-moon
Repo: ether-moon/skill-set PR: 21
File: plugins/skill-set/skills/improving-architecture/SKILL.md:46-149
Timestamp: 2026-05-04T09:41:27.059Z
Learning: In the `ether-moon/skill-set` repository, skill SKILL.md files use a numbered `### N. Phase` heading structure (not markdown checklist items `- [ ]`) for process steps. This is the established authoring convention across skills such as `shipping-pr/SKILL.md`, `creating-skills/SKILL.md`, and `developing-test-first/SKILL.md`. Do not suggest converting process phases to checklists in individual skill files — any such change would need to be applied project-wide.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

- Where do tightly-coupled modules leak across their seams?
- Which parts are untested or hard to test through their current interface?

For broader sweeps, dispatch an `Explore` agent (`Agent` tool with `subagent_type=Explore`) to walk a directory or feature area in parallel — see `superpowers:dispatching-parallel-agents`.

@coderabbitai coderabbitai Bot May 4, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use a fully qualified MCP tool name.

Agent is referenced without a server prefix. Please use the server-qualified form expected by the repo convention. As per coding guidelines, “Use fully qualified MCP tool names with server prefix (e.g., ServerName:tool_name...).”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/skill-set/skills/improving-architecture/SKILL.md` at line 62, The
reference to the MCP tool `Agent` must use the repository's server-qualified
naming convention; update the text that says "dispatch an `Explore` agent
(`Agent` tool with `subagent_type=Explore`)" to use the fully qualified tool
name (e.g., replace `Agent` with the server-prefixed form like
`ServerName:Agent`) and ensure any inline code or example that mentions the tool
follows that same pattern; keep the `Explore` subagent_type as-is but show it in
the context of the server-qualified tool (e.g., `ServerName:Agent` with
`subagent_type=Explore`) and update the related reference to
`superpowers:dispatching-parallel-agents` if it includes unqualified tool
mentions.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skipping this suggestion. Agent is a Claude Code built-in tool, not an MCP server tool. The AGENTS.md MCP-naming rule ("ServerName:tool_name") applies only to MCP-provided tools. The same unprefixed reference exists in plugins/skill-set/skills/shipping-pr/reference/blocker-resolution.md already on main, confirming the convention.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ether-moon, thanks for the clear explanation — you're right, and I was mistaken. The ServerName:tool_name convention applies only to MCP-provided tools, not to Claude Code built-in tools like Agent. The existing usage in plugins/skill-set/skills/shipping-pr/reference/blocker-resolution.md on main is a solid confirmation of the established convention. I'll disregard this comment.


✏️ Learnings added
Learnt from: ether-moon
Repo: ether-moon/skill-set PR: 21
File: plugins/skill-set/skills/improving-architecture/SKILL.md:62-62
Timestamp: 2026-05-04T09:41:27.699Z
Learning: In the `ether-moon/skill-set` repository, `Agent` (with `subagent_type=Explore` etc.) is a Claude Code built-in tool, NOT an MCP server tool. The `ServerName:tool_name` fully-qualified naming rule defined in AGENTS.md applies only to MCP-provided tools. Built-in Claude Code tools like `Agent` should remain unprefixed. Confirmed by existing usage in `plugins/skill-set/skills/shipping-pr/reference/blocker-resolution.md` on main.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

Comment thread plugins/skill-set/skills/improving-architecture/SKILL.md Outdated
ether-moon added 2 commits May 4, 2026 18:23
Add `text` language identifier to four fenced code blocks flagged by
markdownlint rule MD040 (fenced-code-language):

- SKILL.md:70 — candidate template block
- SKILL.md:87 — filled candidate example block
- SKILL.md:137 — process-flow diagram block
- reference/deepening.md:45 — strategy-selection diagram block

Addresses CodeRabbit OBVIOUS review comments on PR #21.
Removes Korean-language trigger phrases from descriptions and "When to Use"
sections of the four new skills, per AGENTS.md repository language policy
("All repository content MUST be written in English by default"). Korean
runtime triggers were CodeRabbit review feedback on PR #21.

Affected skills:
- grilling-plans
- building-shared-vocabulary
- zooming-out-on-code
- improving-architecture
@ether-moon

Copy link
Copy Markdown
Owner Author

ship cycle 1 summary

Pre-cycle HEAD: d0f7e4b
Post-cycle HEAD: 7c38398

Applied

  • 4 OBVIOUS (commit 7f413dc) — markdown lint: added text language tags to fenced code blocks in improving-architecture/SKILL.md (×3) and improving-architecture/reference/deepening.md (×1).
  • 1 AMBIGUOUS approved (commit 7c38398) — removed Korean trigger phrases from descriptions and "When to Use" sections of all 4 new skills, per AGENTS.md repository English-only policy.

Skipped (with rationale)

  • Convert Process steps to checklists — current ### N. Phase form is consistent with other skills in this repo (shipping-pr, creating-skills, etc.); switching one skill would diverge from the project's authoring style.
  • Fully qualify Agent tool nameAgent is a Claude Code built-in, not an MCP server tool; the AGENTS.md MCP-naming rule applies only to MCP-provided tools (the same unprefixed reference exists in shipping-pr/reference/blocker-resolution.md already on main).

Entering cycle 2 to wait for CodeRabbit incremental review on 7c38398.

@ether-moon

Copy link
Copy Markdown
Owner Author

ship cycle 2 summary — convergence reached

Pre-cycle HEAD: 7c38398
Post-cycle HEAD: 7c38398 (no new commits — terminal state)

State

  • CI: CodeRabbit SUCCESS, no other workflows configured for this path
  • Merge: MERGEABLE / CLEAN
  • CodeRabbit incremental review: did not arrive within 10 min for the new HEAD (no significant new diff to review beyond what was processed in cycle 1)
  • Open review threads: 2 — both are user-decided skips, replied with rationale (Convert process steps to checklists and Fully qualify Agent tool name)

Outcome

PR is ready to merge. The two open threads are intentional skip decisions with documented rationale on the threads themselves; reviewer can mark resolved as part of approval.

shipping-pr terminating with clean exit (cycle 2/3, max-cycles not exhausted).

@ether-moon
ether-moon merged commit 79e923a into main May 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant