Skip to content

Add support for Factory's Droid CLI#129

Closed
galangryandana wants to merge 1 commit intoobra:mainfrom
galangryandana:add-factory-droid-support
Closed

Add support for Factory's Droid CLI#129
galangryandana wants to merge 1 commit intoobra:mainfrom
galangryandana:add-factory-droid-support

Conversation

@galangryandana
Copy link
Copy Markdown

@galangryandana galangryandana commented Nov 30, 2025

Summary

 Add support for Factory's Droid CLI (https://docs.factory.ai/)

 - Add .factory/ directory with Droid CLI specific implementation
 - Add skills adjusted for Droid CLI (terminology, paths)
 - Add droids (general-purpose, code-reviewer, explore, plan)
 - Add commands (brainstorm, write-plan, execute-plan)
 - Add AGENTS.md protocol for context injection
 - Add install.sh for one-line installation
 - Add docs/README.factory.md with complete documentation

 ## Motivation and Context

 Factory's Droid CLI is an AI coding assistant similar to Claude Code, but
 with some architectural differences. This PR enables Droid CLI users to
 benefit from the Superpowers workflow system.

 **Why this is needed:**
 - Droid CLI has a growing user base that could benefit from Superpowers
 - Droid CLI has native `Skill` and `Task` tools that map well to Superpowers
 concepts
 - The implementation required minimal changes - mostly terminology and path
 adjustments

 **Key differences from Claude Code:**

 | Feature | Claude Code | Droid CLI |
 |---------|-------------|-----------|
 | Skill loading | Built-in `/skill` command | Native `Skill("name")` tool |
 | Subagents | Built-in Task tool | Native `Task` tool with droids |
 | Context injection | CLAUDE.md + hooks | AGENTS.md (auto-loaded) |
 | Config directory | `~/.claude/` | `~/.factory/` |

 ## How Has This Been Tested?

 Extensively tested on Droid CLI with multiple test scenarios:

 ### Unit Tests (Individual Components)

 **Commands:**
 - [x] `/brainstorm` - triggers `Skill("brainstorming")` tool correctly
 - [x] `/write-plan` - triggers `Skill("writing-plans")` tool correctly
 - [x] `/execute-plan` - triggers `Skill("executing-plans")` tool correctly

 **Automatic Skill Detection:**
 - [x] "I want to build a todo app" → AI uses brainstorming skill
 automatically
 - [x] "Help debug this error" → AI uses systematic-debugging skill
 - [x] Protocol prevents AI from jumping directly to code

 **Droids:**
 - [x] `general-purpose` droid dispatches via Task tool
 - [x] `code-reviewer` droid dispatches for code review
 - [x] `explore` and `plan` droids available and functional

 **Installation:**
 - [x] One-line install script works: `curl -fsSL .../install.sh | bash`
 - [x] Manual installation steps verified
 - [x] Existing AGENTS.md preserved (appends instead of overwrites)
 - [x] Installation with hooks disabled - system still works (verified hooks
 are not essential)

 ### Full Workflow Test

 Tested complete end-to-end workflow with prompt: **"I want to create a simple
  todo list application"**

 | Step | Skill/Action | Status |
 |------|--------------|--------|
 | 1. Check existing docs | AI searches `docs/designs/`, `docs/plans/` first |
  ✅ Pass |
 | 2. Brainstorming | AI uses `Skill("brainstorming")`, asks questions ONE at
 a time | ✅ Pass |
 | 3. Design approval | AI presents design in sections, waits for approval |
 ✅ Pass |
 | 4. Writing plans | AI uses `Skill("writing-plans")` after design approved |
  ✅ Pass |
 | 5. Execution choice | AI offers: Subagent-driven vs Parallel session | ✅
 Pass |
 | 6. Task execution | AI dispatches `general-purpose` droid per task | ✅
 Pass |
 | 7. Code review | AI dispatches `code-reviewer` droid between tasks | ✅
 Pass |
 | 8. TDD enforcement | AI follows RED-GREEN-REFACTOR during implementation |
 ✅ Pass |
 | 9. Verification | AI uses `verification-before-completion` before claiming
 done | ✅ Pass |

 ### Protocol Enforcement Tests

 | Scenario | Expected Behavior | Status |
 |----------|-------------------|--------|
 | User asks to "just code it quickly" | AI refuses, insists on brainstorming
 first | ✅ Pass |
 | User asks to "add tests after" | AI flags TDD violation, offers
 alternatives | ✅ Pass |
 | AI tempted to skip skill | Anti-rationalization rules prevent skipping | ✅
  Pass |
 | User asks for code review | AI dispatches `code-reviewer` droid (doesn't
 self-review) | ✅ Pass |

 ### Edge Cases Tested

 - [x] Fresh project (no existing docs) → starts brainstorming
 - [x] Existing design doc found → AI asks: continue/fresh/update?
 - [x] Multiple independent failures → AI considers
 `dispatching-parallel-agents`
 - [x] Flaky tests reported → AI uses `condition-based-waiting` skill
 - [x] Session restart → AGENTS.md reloads, protocol still active

 ### Negative Tests (What Should NOT Work)

 - [x] Hooks disabled (`enableHooks: false`) → System still works (confirmed
 hooks not essential)
 - [x] Without AGENTS.md → Protocol not enforced (as expected)
 - [x] Without skills folder → Skills not available (as expected)

 ## Breaking Changes

 None. This PR only adds new files in `.factory/` directory and
 `docs/README.factory.md`. No existing files are modified.

 Users of other platforms (Claude Code, Codex, OpenCode) are not affected.

 ## Types of changes

 - [ ] Bug fix (non-breaking change which fixes an issue)
 - [x] New feature (non-breaking change which adds functionality)
 - [ ] Breaking change (fix or feature that would cause existing functionality
  to change)
 - [x] Documentation update

 ## Checklist

 - [x] I have read the [MCP Documentation](https://modelcontextprotocol.io)
 - [x] My code follows the repository's style guidelines
 - [x] New and existing tests pass locally
 - [x] I have added appropriate error handling
 - [x] I have added or updated documentation as needed

 ## Additional context

 ### Skills Adjustments Made

 The skills in `.factory/skills/` are copies of the original skills with these
  adjustments for Droid CLI compatibility:

 1. **Reference format changes:**
    - `superpowers:skill-name` → `` `skill-name` skill ``
    - `superpowers:code-reviewer` → `` `code-reviewer` droid ``

 2. **Path changes:**
    - `~/.claude/` → `~/.factory/`
    - `CLAUDE.md` → `AGENTS.md`

 3. **Terminology:**
    - "subagent" retained for methodology concepts (e.g.,
 `subagent-driven-development` skill name)
    - "droid" used for dispatched workers via Task tool

 ### Architecture Notes

 Droid CLI's native tool support made integration straightforward:

 - **No CLI scripts needed** - Unlike Codex which requires `superpowers-codex`
  script, Droid CLI's native `Skill` tool handles skill loading directly
 - **No hooks needed** - Droid CLI auto-loads `AGENTS.md` into context each
 session (hooks were tested but output doesn't inject into AI context)
 - **Native Task tool** - Maps directly to subagent dispatching with custom
 droids

 ### File Structure

.factory/
├── AGENTS.md # Protocol (auto-loaded by Droid CLI)
├── INSTALL.md # Installation guide
├── install.sh # One-line installer
├── commands/ # Slash commands
│ ├── brainstorm.md
│ ├── write-plan.md
│ └── execute-plan.md
├── droids/ # Droid definitions for Task tool
│ ├── general-purpose.md
│ ├── code-reviewer.md
│ ├── explore.md
│ └── plan.md
└── skills/ # 20 skills (adjusted for Droid CLI)
├── brainstorming/
├── test-driven-development/
├── systematic-debugging/
└── ... (17 more)

docs/
└── README.factory.md # Complete documentation

 ### Installation

 Users can install with one command:

 ```bash
 curl -fsSL
 https://raw.githubusercontent.com/obra/superpowers/main/.factory/install.sh |
  bash

Or via Droid CLI:

 Fetch and follow instructions from
 https://raw.githubusercontent.com/obra/superpowers/main/.factory/INSTALL.md


 ---

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced Superpowers protocol for Factory Droid CLI with automated agent workflows
    • Added intelligent agent droids for code review, exploration, planning, and general-purpose development tasks
    • New one-line installation script and comprehensive setup guide
    • Automated commands for brainstorming, planning, and executing development tasks
  • Documentation

    • Extensive guides for development workflows, debugging patterns, and testing best practices
    • Complete integration documentation for Factory and Droid CLI
    • Troubleshooting and verification resources

✏️ Tip: You can customize this high-level summary in your review settings.

     - Add .factory/ directory with Droid CLI specific implementation
     - Add skills adjusted for Droid CLI (terminology, paths)
     - Add droids (general-purpose, code-reviewer, explore, plan)
     - Add commands (brainstorm, write-plan, execute-plan)
     - Add AGENTS.md protocol for context injection
     - Add install.sh for one-line installation
     - Add docs/README.factory.md with complete documentation
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 30, 2025

Walkthrough

Introduces a comprehensive Superpowers protocol and skill framework for the Droid CLI (Factory). Adds the AGENTS.md directive protocol defining pre-response workflows, mandatory skill checks, and design-first processes; installation scripts and documentation; new commands for brainstorming, planning, and plan execution; droid definitions for code review, exploration, and planning; and 30+ skills spanning design, execution, debugging, testing, code review, and development workflows.

Changes

Cohort / File(s) Summary
Core Protocol & Installation
.factory/AGENTS.md, .factory/INSTALL.md, .factory/install.sh, docs/README.factory.md
Agent directive protocol defining Superpowers system, pre-response skill workflows, multi-phase development chains, and dispatch rules; one-line installation script with verification and setup guidance; comprehensive user documentation for Factory integration and troubleshooting.
Commands
.factory/commands/brainstorm.md, .factory/commands/execute-plan.md, .factory/commands/write-plan.md
Three command directives for interactive design refinement, batch-based plan execution with review checkpoints, and detailed implementation planning workflow.
Droids
.factory/droids/code-reviewer.md, .factory/droids/explore.md, .factory/droids/general-purpose.md, .factory/droids/plan.md
Four droid definitions for specialized roles: senior code review with issue categorization, fast read-only codebase exploration, general-purpose TDD workflow execution, and pre-implementation research.
Skills - Design & Planning
.factory/skills/brainstorming/SKILL.md, .factory/skills/writing-plans/SKILL.md, .factory/skills/writing-skills/SKILL.md, .factory/skills/writing-skills/anthropic-best-practices.md, .factory/skills/writing-skills/persuasion-principles.md
Brainstorming skill for Socratic design refinement, writing-plans skill for structured task decomposition with TDD steps, comprehensive guide to skill authoring with structure/naming/content patterns, best practices for Claude skill design, and persuasion principles for skill development.
Skills - Execution & Development
.factory/skills/executing-plans/SKILL.md, .factory/skills/subagent-driven-development/SKILL.md, .factory/skills/finishing-a-development-branch/SKILL.md, .factory/skills/using-git-worktrees/SKILL.md
Batch-based plan execution with verification checkpoints, isolated subagent-per-task workflow with code-review gates, development branch finishing with merge/PR/discard options, and Git worktrees setup/verification for feature work.
Skills - Code Review & Quality
.factory/skills/requesting-code-review/SKILL.md, .factory/skills/requesting-code-review/code-reviewer.md, .factory/skills/receiving-code-review/SKILL.md, .factory/skills/verification-before-completion/SKILL.md
Workflow for dispatching code-reviewer subagent with SHA tracking, comprehensive code review checklist and output format, structured feedback response process, and evidence-based verification claims.
Skills - Debugging & Testing
.factory/skills/systematic-debugging/SKILL.md, .factory/skills/systematic-debugging/CREATION-LOG.md, .factory/skills/systematic-debugging/test-*.md (3 files), .factory/skills/root-cause-tracing/SKILL.md, .factory/skills/root-cause-tracing/find-polluter.sh, .factory/skills/test-driven-development/SKILL.md, .factory/skills/testing-anti-patterns/SKILL.md, .factory/skills/testing-skills-with-subagents/SKILL.md, .factory/skills/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md
Four-phase systematic debugging framework with root-cause tracing mandate; bash utility for identifying test pollution; comprehensive TDD guide; anti-patterns documentation; skill testing framework using TDD principles with pressure scenarios; test variants and protocol for validating skills under constraint.
Skills - Technical Patterns
.factory/skills/condition-based-waiting/SKILL.md, .factory/skills/condition-based-waiting/example.ts, .factory/skills/defense-in-depth/SKILL.md, .factory/skills/dispatching-parallel-agents/SKILL.md
Condition-based polling utility with TypeScript event-waiting implementations; multi-layer validation pattern; parallel agent dispatching workflow.
Skills - Process & Governance
.factory/skills/sharing-skills/SKILL.md, .factory/skills/using-superpowers/SKILL.md
Skill contribution workflow via branches, commits, and PRs; mandatory pre-response skill enumeration and applicability checking protocol.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

  • Breadth over complexity: 50+ new files across multiple cohorts and directories, but individually straightforward documentation and configuration.
  • Key areas requiring focus:
    • .factory/install.sh — Shell script with prerequisite checks, repository cloning, file installation, and AGENTS.md protocol merging; verify error handling and path safety.
    • .factory/AGENTS.md — Core protocol defining all pre-response workflows, skill enforcement, and anti-rationalization rules; ensure consistency with command/droid/skill definitions.
    • .factory/skills/writing-skills/SKILL.md and skill authoring guidance — Defines meta-standards for all other skills; check for circular dependencies or conflicts with authored skills.
    • Systematic debugging skill suite (5 files) and testing-skills-with-subagents — Complex multi-file skill definitions with pressure-test scenarios; ensure internal coherence and coverage.
    • .factory/skills/subagent-driven-development/SKILL.md — Orchestrates entire workflow with code-review gates; verify alignment with requesting-code-review and receiving-code-review skills.

Possibly related issues

Poem

🐰 With whiskers twitched and skills compiled,
A new protocol arrived, oh so styled!
Subagents dance in checklist-driven chains,
TDD blooms where debugging reigns,
Factory's superpowers now unfurled—
Design-first droids reshape the world! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title 'Add support for Factory's Droid CLI' clearly and concisely describes the main change: introduction of comprehensive support for Factory's Droid CLI, including new skills, droids, commands, protocol, and installation infrastructure.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🧹 Nitpick comments (36)
.factory/skills/writing-skills/anthropic-best-practices.md (1)

257-257: Add language specifiers to code blocks for clarity.

Three code blocks lack language specifiers, which reduces syntax highlighting and clarity for readers:

  • Line 257: Directory structure (use text or bash)
  • Line 301: Directory structure (use text or bash)
  • Line 1040: Directory structure (use text or bash)

Apply this fix to improve readability:

-```
+```text
 ├── SKILL.md              # Main instructions (loaded when triggered)

Also applies to: 301-301, 1040-1040

.factory/skills/condition-based-waiting/example.ts (1)

20-44: Polling logic and timeout handling look solid; consider DRY-ing the shared pattern

The three helpers correctly:

  • Poll threadManager.getEvents(threadId) on a bounded 10ms interval.
  • Enforce a hard timeout using Date.now() - startTime > timeoutMs.
  • Resolve only on a successful match and stop scheduling new timeouts, so there’s no runaway timer loop.

Given the near-identical check + timeout pattern across waitForEvent, waitForEventCount, and waitForEventMatch, you could optionally factor this into a small internal waitFor helper (taking a predicate and error message builder) to reduce duplication and keep future changes to the polling behavior in one place. This is fully optional; the current implementation is already clear and correct.

Also applies to: 60-89, 111-136

.factory/skills/testing-anti-patterns/SKILL.md (3)

33-33: Add language specifiers to fenced code blocks.

The code blocks at lines 33 and 90 should specify language tags for syntax highlighting and clarity. Line 33 appears to be TypeScript/JavaScript test code, and line 90 is a shell/bash block.

Apply this diff:

-```
+```typescript
 // ❌ BAD: Testing that the mock exists
 test('renders sidebar', () => {
   render(<Page />);
   expect(screen.getByTestId('sidebar-mock')).toBeInTheDocument();
 });
-```
+```

And:

-```
+```bash
 // ✅ GOOD: Test utilities handle test cleanup
-```
+```

As per the Markdown linting standards (MD040), all fenced code blocks should specify a language identifier.

Also applies to: 90-90


208-208: Use proper headings instead of emphasis for section labels.

Lines 208, 218, 228, 236, 246, 294, and 302 use bold emphasis (e.g., **Critical:**, **your human partner's question:**, **Actions:**, **If uncertain:**) where proper Markdown headings would be more appropriate and consistent.

Example fixes:

-**Critical:**
+### Critical
-**your human partner's question:** "Do we need to be using a mock here?"
+### Your Human Partner's Question: "Do we need to be using a mock here?"
-**When Mocks Become Too Complex**
+## When Mocks Become Too Complex

This aligns with Markdown best practices (MD036) and improves document structure for navigation and parsing.

Also applies to: 218-218, 228-228, 236-236, 246-246, 294-294, 302-302


1-302: Excellent comprehensive anti-patterns guide with strong practical examples.

The skill document is well-structured and educational. The Iron Laws are clear, each anti-pattern is explained with concrete violations and fixes, and the gate functions provide actionable decision trees. The quick reference table and red flags section are particularly useful for practitioners. The integration of "your human partner" feedback mechanisms aligns well with the collaborative debugging philosophy described in systematic-debugging and other skills.

.factory/skills/systematic-debugging/SKILL.md (2)

18-18: Add language specifiers to fenced code blocks.

Lines 18 and 77 contain fenced code blocks without language identifiers. Both appear to be shell/bash commands and should include language tags.

Apply these diffs:

-```
+```bash
 NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
-```
+```
-```
+```bash
 For EACH component boundary:
    - Log what data enters component
    - Log what data exits component
    - Verify environment/config propagation
    - Check state at each layer

    Run once to gather evidence showing WHERE it breaks
    THEN analyze evidence to identify failing component
    THEN investigate that specific component
-```
+```

This follows Markdown linting standards (MD040).

Also applies to: 77-77


1-295: Exceptional four-phase debugging framework with clear decision gates.

This skill provides a rigorous, scientific approach to debugging with strong emphasis on root cause analysis before attempting fixes. The Iron Law is well-articulated, and the red flags section effectively calls out common anti-patterns in debugging behavior. The phase descriptions are detailed and actionable. Integration points with other skills (root-cause-tracing, test-driven-development, defense-in-depth) provide a cohesive skill ecosystem. The real-world impact data is compelling.

.factory/skills/dispatching-parallel-agents/SKILL.md (2)

143-143: Add language specifier to code block.

Line 143 contains a fenced code block showing Task definitions that should specify a language identifier for clarity.

Apply this diff:

-```
+```typescript
 // In Claude Code / AI environment
 Task("Fix agent-tool-abort.test.ts failures")
 Task("Fix batch-completion-behavior.test.ts failures")
 Task("Fix tool-approval-race-conditions.test.ts failures")
 // All three run concurrently
-```
+```

This follows Markdown linting standards (MD040) and hints that this is TypeScript/JavaScript-like syntax.


1-180: Excellent pattern documentation with clear decision logic and practical real-world example.

The skill provides a clear, evidence-based pattern for parallelizing independent debugging tasks. The decision diagram effectively illustrates when to use parallel dispatch, and the four-step pattern is practical. The "Common Mistakes" section (too broad scope, missing context, no constraints, vague output) provides valuable guidance that would help contributors apply the pattern correctly. The real-world example (3 agents fixing different failures in parallel) is compelling and demonstrates clear value. The verification section ensures integration risks are minimized.

.factory/skills/receiving-code-review/SKILL.md (1)

86-98: Clarify intent and authority of "your human partner's rule" references.

Lines 86 and 98 reference "your human partner's rule" with paraphrased guidance. This pattern appears multiple times (lines 86, 98, 121) but lacks explicit definition. Clarify whether these are optional guidelines or mandatory behaviors for the workflow.

Consider adding a section early in the document (after line 12) clarifying the role and authority of "your human partner" directives, so readers understand when to follow them vs. when they are suggestions.

.factory/skills/requesting-code-review/code-reviewer.md (1)

112-112: Add language specifier to fenced code block.

Line 112 starts a code block in the example output but lacks a language identifier. This affects syntax highlighting and Markdown compliance.

Apply this diff:

-```
+```markdown
 ### Strengths
.factory/skills/requesting-code-review/SKILL.md (1)

51-51: Add language specifier to fenced code block.

Line 51 starts a code block but lacks a language identifier. The context suggests bash commands, which should be specified for syntax highlighting.

Apply this diff:

-```
+```bash
 [Just completed Task 2: Add verification function]
.factory/skills/using-git-worktrees/SKILL.md (2)

42-42: Add language specifiers to fenced code blocks (lines 42, 138, 176).

Multiple code blocks lack language identifiers. Lines 42 and 176 contain bash commands; line 138 contains plain text output. These should be specified for proper Markdown compliance and syntax highlighting.

Apply these diffs:

 ### 1. Check Existing Directories
 
-```bash
+```bash
 # Check in priority order

At line 138 (Plain text output showing usage):

 If no directory exists and no CLAUDE.md preference:
 
-```
+```text
 No worktree directory found. Where should I create worktrees?

At line 176 (Bash commands):

 ## Example Workflow
 
-```
+```bash
 You: I'm using the using-git-worktrees skill to set up an isolated workspace.

Also applies to: 138-138, 176-176


158-173: Convert emphasis-formatted section headers to proper Markdown headings (lines 158-170).

Lines 158, 162, 166, and 170 use bold emphasis (text) to format section headers rather than proper Markdown headings (###). This violates Markdown best practices (MD036). These should be converted to h4 headings for proper document structure.

Apply this diff:

 ## Common Mistakes
 
-**Skipping .gitignore verification**
+### Skipping .gitignore verification

Apply similar changes to lines 162, 166, and 170:

-**Assuming directory location**
+### Assuming directory location

-**Proceeding with failing tests**
+### Proceeding with failing tests

-**Hardcoding setup commands**
+### Hardcoding setup commands
.factory/skills/writing-plans/SKILL.md (2)

65-82: Convert emphasized step headers to proper Markdown headings (lines 65, 70, 77, 82).

Lines 65, 70, 77, and 82 use bold emphasis (Step N: ...) instead of proper Markdown headings. This violates Markdown best practices (MD036) and makes document structure less clear for parsers and readers.

Apply this diff to convert emphasis to h4 headings:

-**Step 1: Write the failing test**
+#### Step 1: Write the failing test

Apply similar changes to lines 70, 77, and 82:

-**Step 2: Run test to verify it fails**
+#### Step 2: Run test to verify it fails

-**Step 3: Write minimal implementation**
+#### Step 3: Write minimal implementation

-**Step 4: Run test to verify it passes**
+#### Step 4: Run test to verify it passes

-**Step 5: Commit**
+#### Step 5: Commit

88-88: Add language specifier to fenced code block at line 88.

Line 88 contains a closing code fence without a corresponding opening fence with language specification. The block preceding it (lines 84-87) shows bash commands, so the language should be specified.

Apply this diff:

 **Step 5: Commit**
 
-```bash
+```bash
 git add tests/path/test.py src/path/file.py
.factory/skills/test-driven-development/SKILL.md (3)

33-33: Specify language for fenced code blocks to improve readability and enable syntax highlighting.

Lines with missing language specifications: 33 (dot/graphviz), 49-69 (dot), 76-90 (typescript), 94-106 (typescript), 295-300 (typescript), 310-315 (typescript), 359 (text/plain).

Add language identifiers to all fenced code blocks. For example:

- ```
+ ```dot
  digraph tdd_cycle {

and

- ```
+ ```typescript
  test('retries failed operations 3 times', async () => {

Also applies to: 49-69, 76-90, 94-106, 295-300, 310-315, 359-362


208-208: Use heading syntax instead of bold formatting for section headers.

Lines 208, 218, 228, 236, 246, 294, 302, 308, 318 use bold (**Text**) where proper headings (### Text) would improve document structure and semantic clarity.

Replace bold headers with heading markup:

- **"I'll write tests after to verify it works"**
+ ### I'll write tests after to verify it works

Also applies to: 218-218, 228-228, 236-236, 246-246, 294-294, 302-302, 308-308, 318-318


254-254: Minor grammar: add "that" for clarity.

Line 254: "lose proof tests work" → "lose proof that tests work"

.factory/skills/verification-before-completion/SKILL.md (1)

18-18: Specify language for fenced code blocks.

Lines 18, 26, 79, 85, 91, 97, 103 have code blocks without language identifiers. Add bash, text, or appropriate language:

- ```
+ ```bash
  NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE

Also applies to: 26-26, 79-79, 85-85, 91-91, 97-97, 103-103

.factory/skills/subagent-driven-development/SKILL.md (1)

41-41: Specify language for code block examples to improve readability.

Lines 41, 64, 85, 111 contain code blocks (task dispatch examples) without language identifiers.

Add language identifiers:

- ```
+ ```yaml
  Task tool (general-purpose):

or

- ```
+ ```text
  Task(subagent_type: "general-purpose", ...

Also applies to: 64-64, 85-85, 111-111

.factory/AGENTS.md (1)

52-52: Specify language for code blocks.

Lines 52 and 66 have code blocks without language specifications.

- ```
+ ```yaml
  Task(subagent_type: "general-purpose", description: "Implement Task 1", prompt: "...")

and

- ```
+ ```text
  brainstorming → writing-plans → [execution choice] → TDD per task → verification → code-review → finishing-branch

Also applies to: 66-66

.factory/install.sh (1)

87-103: AGENTS.md backup filename collision risk.

Line 94 creates a backup with ${AGENTS_FILE}.backup, which will overwrite any previous backup without warning. If the installer is run multiple times, earlier backups are lost.

Consider timestamping backups:

-cp "$AGENTS_FILE" "${AGENTS_FILE}.backup"
+cp "$AGENTS_FILE" "${AGENTS_FILE}.backup.$(date +%s)"
.factory/skills/finishing-a-development-branch/SKILL.md (1)

16-197: Add language specifications to all fenced code blocks.

All fenced code blocks in this skill lack language identifiers, violating MD040. Adding language specs improves readability, enables syntax highlighting, and improves searchability. Update all code blocks:

-```
+```bash
 # Run project's test suite
 npm test / cargo test / pytest / go test ./...
-```
+```bash

This applies to lines: 16, 22, 42, 51, 68, 90, 102, 134, 153, 179, 185, 191, 197.

.factory/skills/writing-skills/SKILL.md (1)

74-451: Add language specifications to fenced code blocks.

Multiple code blocks lack language identifiers (MD040 violations at lines 74, 103, 198, 317, 324, 332, 343, 451). Add appropriate language specs:

-```
+```yaml
 ---
 name: Skill-Name-With-Hyphens
-```
+```yaml
-```bash
+```bash
 wc -w skills/path/SKILL.md
-```
+```bash

Consistently apply language specs throughout.

.factory/skills/testing-skills-with-subagents/SKILL.md (1)

33-33: Add language specifications to fenced code blocks.

Code blocks at lines 33, 90, 208, 359 are missing language identifiers (MD040). Add appropriate specs:

-```
+```markdown
 IMPORTANT: This is a real scenario. Choose and act.
-```
+```markdown
-```
+```markdown
 | Excuse | Reality |
-```
+```markdown

Apply consistently throughout the file.

Also applies to: 90-90, 208-208, 359-359

.factory/skills/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md (1)

8-8: Add language specifications to fenced code blocks.

Fenced code blocks at lines 8, 22, 39, 53 lack language identifiers (MD040). Add appropriate specs:

-```
+```markdown
 IMPORTANT: This is a real scenario. Choose and act.
-```
+```markdown

This applies to all unlabeled code blocks in the file.

Also applies to: 22-22, 39-39, 53-53

.factory/skills/systematic-debugging/test-pressure-1.md (1)

12-20: Add language specification to code block.

Line 12 has a fenced code block without language identifier (MD040). Based on context (log output), add appropriate spec:

-```
+```
 PaymentError: Connection timeout to payments.api.com
-```
+```

(Note: This appears to be log output; consider using language-appropriate identifier like text, log, or leaving as is if emphasizing it's plaintext.)

.factory/INSTALL.md (1)

52-52: Add language specifiers to code blocks.

Lines 52 and 66 contain shell script blocks without language identifiers, which impacts markdown rendering and syntax highlighting.

Apply this diff:

-```
+```bash
 mkdir -p ~/.factory/skills
 cp -r ~/.factory/superpowers/.factory/skills/* ~/.factory/skills/
-```
+```

And similarly for line 66:

-```
+```bash
 # Or append to existing:
 cat ~/.factory/superpowers/.factory/AGENTS.md >> ~/.factory/AGENTS.md
-```
+```

Also applies to: 66-66

.factory/skills/systematic-debugging/test-pressure-2.md (1)

12-15: Add language specifiers to code blocks.

The code blocks at lines 12, 18, 38, and 53 show test output and pseudo-code without language identifiers. Adding appropriate specs improves rendering.

For the test failure output (lines 12-15), use language spec text or omit language:

-```
+```text
 Expected: { status: 'completed', amount: 100 }
 Received: { status: 'pending', amount: 100 }
-```
+```

Apply similar language specs to the other blocks.

Also applies to: 18-24, 38-42, 53-59

.factory/skills/systematic-debugging/test-pressure-3.md (1)

8-30: Add language specifiers to code blocks.

Multiple code blocks (lines 8, 22, 39, 53) contain dialogue/quoted text without language identifiers. Adding specs improves markdown rendering consistency.

For dialogue blocks, use text language spec:

-```
+```text
 You're in a Zoom call with:
 - Your senior engineer (10 years experience)
 - The tech lead
 - Two other developers
-```
+```

Apply to all dialogue/quoted text blocks.

Also applies to: 22-28, 39-59, 53-65

docs/README.factory.md (2)

26-27: Add language specifiers to code blocks.

Multiple code blocks lack language identifiers, impacting syntax highlighting and rendering. Lines 26, 67, 75, 89, 110, and 143 should specify bash or appropriate language.

Example for line 26 (bash install):

-```
+```bash
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/main/.factory/INSTALL.md
-```
+```

Example for line 67 (bash request):

-```
+```bash
 Use the systematic-debugging skill to help me fix this bug
-```
+```

Example for line 143 (directory tree):

-```
+```
 ~/.factory/
 ├── AGENTS.md              # Protocol (auto-loaded each session)
 ├── skills/                # Skills
 │   ├── brainstorming/
+```

Apply similar changes to all other code blocks.

Also applies to: 67-68, 75-76, 89-94, 110-112, 143-161


251-253: Wrap bare URLs in markdown links.

Lines 251-253 contain bare URLs that should be wrapped in markdown link syntax for better rendering and accessibility.

-## Getting Help

-- Report issues: https://github.com/obra/superpowers/issues
-- Factory docs: https://docs.factory.ai/
-- Superpowers blog: https://blog.fsck.com/2025/10/09/superpowers/
+## Getting Help

+- Report issues: [GitHub Issues](https://github.com/obra/superpowers/issues)
+- Factory docs: [Factory Documentation](https://docs.factory.ai/)
+- Superpowers blog: [Superpowers Blog](https://blog.fsck.com/2025/10/09/superpowers/)
.factory/skills/brainstorming/SKILL.md (1)

19-19: Consider hyphenating "multiple choice" in compound adjective context.

Line 19 uses "multiple choice questions" where a hyphen would improve grammar: "multiple-choice questions" when used as a compound adjective before the noun.

-- Prefer multiple choice questions when possible, but open-ended is fine too
+- Prefer multiple-choice questions when possible, but open-ended is fine too

This is a minor style preference; the current phrasing is acceptable.

.factory/skills/systematic-debugging/CREATION-LOG.md (2)

17-17: Minor style suggestion on phrasing.

Lines 17 and 40 use the phrase "in a hurry" which could be more concise, though the current phrasing is clear and conversational. This is entirely optional.

The phrase "in a hurry" effectively conveys the intended meaning in this context and aligns with the skill's focus on pressure resistance. No change is necessary.

Also applies to: 40-40


89-89: Header redundancy: "Final Outcome" vs "Outcome".

Line 89 uses "Final Outcome" as a header, which could be simplified to just "Outcome" or "Result" to avoid redundancy. This is a minor style point.

-## Final Outcome
+## Outcome
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 515c86f and 7baeaa4.

⛔ Files ignored due to path filters (1)
  • .factory/skills/writing-skills/graphviz-conventions.dot is excluded by !**/*.dot
📒 Files selected for processing (42)
  • .factory/AGENTS.md (1 hunks)
  • .factory/INSTALL.md (1 hunks)
  • .factory/commands/brainstorm.md (1 hunks)
  • .factory/commands/execute-plan.md (1 hunks)
  • .factory/commands/write-plan.md (1 hunks)
  • .factory/droids/code-reviewer.md (1 hunks)
  • .factory/droids/explore.md (1 hunks)
  • .factory/droids/general-purpose.md (1 hunks)
  • .factory/droids/plan.md (1 hunks)
  • .factory/install.sh (1 hunks)
  • .factory/skills/brainstorming/SKILL.md (1 hunks)
  • .factory/skills/condition-based-waiting/SKILL.md (1 hunks)
  • .factory/skills/condition-based-waiting/example.ts (1 hunks)
  • .factory/skills/defense-in-depth/SKILL.md (1 hunks)
  • .factory/skills/dispatching-parallel-agents/SKILL.md (1 hunks)
  • .factory/skills/executing-plans/SKILL.md (1 hunks)
  • .factory/skills/finishing-a-development-branch/SKILL.md (1 hunks)
  • .factory/skills/receiving-code-review/SKILL.md (1 hunks)
  • .factory/skills/requesting-code-review/SKILL.md (1 hunks)
  • .factory/skills/requesting-code-review/code-reviewer.md (1 hunks)
  • .factory/skills/root-cause-tracing/SKILL.md (1 hunks)
  • .factory/skills/root-cause-tracing/find-polluter.sh (1 hunks)
  • .factory/skills/sharing-skills/SKILL.md (1 hunks)
  • .factory/skills/subagent-driven-development/SKILL.md (1 hunks)
  • .factory/skills/systematic-debugging/CREATION-LOG.md (1 hunks)
  • .factory/skills/systematic-debugging/SKILL.md (1 hunks)
  • .factory/skills/systematic-debugging/test-academic.md (1 hunks)
  • .factory/skills/systematic-debugging/test-pressure-1.md (1 hunks)
  • .factory/skills/systematic-debugging/test-pressure-2.md (1 hunks)
  • .factory/skills/systematic-debugging/test-pressure-3.md (1 hunks)
  • .factory/skills/test-driven-development/SKILL.md (1 hunks)
  • .factory/skills/testing-anti-patterns/SKILL.md (1 hunks)
  • .factory/skills/testing-skills-with-subagents/SKILL.md (1 hunks)
  • .factory/skills/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md (1 hunks)
  • .factory/skills/using-git-worktrees/SKILL.md (1 hunks)
  • .factory/skills/using-superpowers/SKILL.md (1 hunks)
  • .factory/skills/verification-before-completion/SKILL.md (1 hunks)
  • .factory/skills/writing-plans/SKILL.md (1 hunks)
  • .factory/skills/writing-skills/SKILL.md (1 hunks)
  • .factory/skills/writing-skills/anthropic-best-practices.md (1 hunks)
  • .factory/skills/writing-skills/persuasion-principles.md (1 hunks)
  • docs/README.factory.md (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
.factory/skills/condition-based-waiting/example.ts (1)
lib/skills-core.js (1)
  • description (23-23)
🪛 LanguageTool
.factory/skills/condition-based-waiting/SKILL.md

[grammar] ~32-~32: Ensure spelling is correct
Context: ...ass sometimes, fail under load) - Tests timeout when run in parallel - Waiting for asyn...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

.factory/skills/writing-skills/SKILL.md

[grammar] ~287-~287: Ensure spelling is correct
Context: ...ists - Labels without semantic meaning (step1, helper2) See @graphviz-conventions.do...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~287-~287: Ensure spelling is correct
Context: ...Labels without semantic meaning (step1, helper2) See @graphviz-conventions.dot for gra...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~372-~372: ‘under stress’ might be wordy. Consider a shorter alternative.
Context: ...s? - Pressure scenarios: Do they comply under stress? - Multiple pressures combined: time + ...

(EN_WORDINESS_PREMIUM_UNDER_STRESS)


[style] ~544-~544: To elevate your writing, try using a synonym here.
Context: ...e"]; ``` Why bad: Can't copy-paste, hard to read ### ❌ Generic Labels helper1, ...

(HARD_TO)

.factory/skills/test-driven-development/SKILL.md

[grammar] ~254-~254: Use a hyphen to join words.
Context: ...ests after ≠ TDD. You get coverage, lose proof tests work. ## Common Rationaliza...

(QB_NEW_EN_HYPHEN)


[style] ~267-~267: To elevate your writing, try using a synonym here.
Context: ...clear" | Listen to test. Hard to test = hard to use. | | "TDD will slow me down" | T...

(HARD_TO)

.factory/skills/systematic-debugging/SKILL.md

[style] ~43-~43: ‘in a hurry’ might be wordy. Consider a shorter alternative.
Context: ...ple bugs have root causes too) - You're in a hurry (rushing guarantees rework) - Manager w...

(EN_WORDINESS_PREMIUM_IN_A_HURRY)

.factory/skills/systematic-debugging/CREATION-LOG.md

[style] ~17-~17: ‘in a hurry’ might be wordy. Consider a shorter alternative.
Context: ...uage ("even if faster", "even if I seem in a hurry") - Concrete steps for each phase **Wh...

(EN_WORDINESS_PREMIUM_IN_A_HURRY)


[style] ~40-~40: ‘in a hurry’ might be wordy. Consider a shorter alternative.
Context: ...") - "even if faster" / "even if I seem in a hurry" - "STOP and re-analyze" (explicit paus...

(EN_WORDINESS_PREMIUM_IN_A_HURRY)


[style] ~89-~89: This phrase is redundant. Consider writing “Outcome”.
Context: ...nts confusion between methodologies ## Final Outcome Bulletproof skill that: - ✅ Clearly ma...

(FINAL_END)

.factory/skills/writing-skills/anthropic-best-practices.md

[style] ~22-~22: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...Default assumption**: Claude is already very smart Only add context Claude doesn't alread...

(EN_WEAK_ADJECTIVE)


[style] ~140-~140: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...: Is the Skill clear and efficient? * Claude Opus (powerful reasoning): Does the S...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~802-~802: Try replacing commonly used words with synonyms to make your writing more engaging.
Context: ...encounter new scenarios. Each iteration improves the Skill based on real agent behavior,...

(IMPROVE_STRENGTHEN)

.factory/skills/requesting-code-review/code-reviewer.md

[style] ~106-~106: Try using a synonym here to strengthen your writing.
Context: ... checking - Mark nitpicks as Critical - Give feedback on code you didn't review - Be...

(GIVE_PROVIDE)

.factory/skills/brainstorming/SKILL.md

[grammar] ~19-~19: Use a hyphen to join words.
Context: ...ime to refine the idea - Prefer multiple choice questions when possible, but open...

(QB_NEW_EN_HYPHEN)

.factory/skills/testing-skills-with-subagents/SKILL.md

[grammar] ~330-~330: Ensure spelling is correct
Context: ...ed flags list - [ ] Updated description ith violation symptoms - [ ] Re-tested - ag...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.18.1)
.factory/skills/systematic-debugging/test-pressure-1.md

12-12: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


29-29: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


37-37: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


53-53: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

.factory/skills/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md

8-8: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


22-22: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


53-53: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/testing-anti-patterns/SKILL.md

33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


90-90: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


208-208: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


218-218: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


228-228: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


236-236: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


246-246: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


294-294: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


302-302: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

.factory/skills/subagent-driven-development/SKILL.md

41-41: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


64-64: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


85-85: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


111-111: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/verification-before-completion/SKILL.md

18-18: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


26-26: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


79-79: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


85-85: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


91-91: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


97-97: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


103-103: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/writing-skills/SKILL.md

74-74: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


293-293: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


317-317: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


324-324: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


332-332: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


343-343: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


451-451: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/dispatching-parallel-agents/SKILL.md

143-143: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/using-git-worktrees/SKILL.md

42-42: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


138-138: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


158-158: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


162-162: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


166-166: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


170-170: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


176-176: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/test-driven-development/SKILL.md

33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


90-90: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


208-208: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


218-218: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


228-228: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


236-236: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


246-246: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


294-294: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


302-302: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


308-308: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


318-318: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


359-359: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/systematic-debugging/SKILL.md

18-18: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


77-77: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/INSTALL.md

52-52: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


66-66: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/README.factory.md

26-26: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


67-67: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


75-75: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


89-89: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


110-110: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


143-143: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


251-251: Bare URL used

(MD034, no-bare-urls)


252-252: Bare URL used

(MD034, no-bare-urls)


253-253: Bare URL used

(MD034, no-bare-urls)

.factory/AGENTS.md

52-52: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


66-66: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/writing-plans/SKILL.md

65-65: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


70-70: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


77-77: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


82-82: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


88-88: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/writing-skills/anthropic-best-practices.md

149-149: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


150-150: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


192-192: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


193-193: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


194-194: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


257-257: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


301-301: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1040-1040: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/requesting-code-review/code-reviewer.md

112-112: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/finishing-a-development-branch/SKILL.md

16-16: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


42-42: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


51-51: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


68-68: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


90-90: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


102-102: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


134-134: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


153-153: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


179-179: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


185-185: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


191-191: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


197-197: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/requesting-code-review/SKILL.md

51-51: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/systematic-debugging/test-pressure-3.md

8-8: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


22-22: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


53-53: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.factory/skills/testing-skills-with-subagents/SKILL.md

33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


90-90: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


208-208: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


218-218: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


228-228: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


236-236: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


246-246: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


294-294: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


302-302: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


308-308: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


318-318: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


359-359: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (28)
.factory/skills/writing-skills/anthropic-best-practices.md (1)

1-20: Clarify alignment with Factory/Droid CLI context.

This documentation file references Anthropic's Claude platform, system prompts, and Claude-specific features (e.g., "Claude Haiku," "Claude Sonnet," "Claude Opus," context windows). However, the PR objectives indicate support for Factory's Droid CLI, which may have different architecture and tooling.

Please clarify:

  • Is this intended as a general reference for understanding Claude Skills concepts that transfer to Droid CLI?
  • Or should content be adapted to reflect Droid CLI-specific terminology, models, and architecture?
  • Are there Droid CLI equivalents for the concepts described (e.g., alternative model names, different context handling)?
.factory/skills/writing-skills/persuasion-principles.md (2)

7-7: Research foundation is solid and well-cited.

The Meincke et al. (2025) study tested 7 persuasion principles with 28,000 conversations with GPT-4o-mini, and compliance increased from 33.3% (control) to 72% (treatment), p < .001. The paper is peer-reviewed and available through SSRN and Wharton's Generative AI Labs.


136-165: Ethical framing is commendable and aligns with research recommendations.

The file correctly distinguishes between legitimate practices (ensuring critical practices are followed, preventing predictable failures) and illegitimate use (manipulation for personal gain, creating false urgency). The test provided—"Would this technique serve the user's genuine interests if they fully understood it?"—aligns with research guidance that legitimate use involves clearly stated goals and respectful tone, while unethical use circumvents safety or creates harm.

.factory/commands/execute-plan.md (1)

1-7: LGTM!

Clear and concise command definition following the established pattern. The instruction to load the skill via Skill("executing-plans") is explicit and aligns with the framework conventions.

.factory/skills/systematic-debugging/SKILL.md (1)

110-120: Verify that referenced sub-skill root-cause-tracing is defined.

Line 114 references "Use root-cause-tracing skill" as a required sub-skill for Phase 1, step 5. Confirm that this skill exists and is properly documented elsewhere in the .factory/skills/ directory.

.factory/skills/sharing-skills/SKILL.md (1)

1-194: Well-structured contribution workflow with practical examples and troubleshooting.

The skill guide provides a clear, step-by-step workflow for contributors. The bash commands are correct and the complete example (async-patterns skill) demonstrates the full process concisely. The troubleshooting section addresses real-world issues (gh CLI setup, SSH keys, merge conflicts). The multi-skill contribution guideline is sound: one skill per PR ensures independent review and merge. The prerequisite linkage to writing-skills ensures quality gates are maintained.

.factory/droids/general-purpose.md (1)

1-20: Clear and concise general-purpose droid definition with sound TDD emphasis.

The droid specification is well-structured and the six-step workflow appropriately emphasizes test-driven development (RED → GREEN → Refactor). The capabilities are practical for complex tasks, and the report-back format is clear. However, verify that all referenced tools (Read, LS, Grep, Glob, Create, Edit, MultiEdit, Execute, TodoWrite) are available in the Droid CLI environment.

Please confirm that all tools listed in the tools array on line 4 are available in the Factory Droid CLI implementation.

.factory/droids/explore.md (1)

1-34: LGTM!

The explore droid is well-defined with clear read-only constraints and a focused tool set (Read, LS, Grep, Glob). The use cases and report-back structure are practical and encourage thorough exploration before proposing changes. The distinction between this read-only droid and the general-purpose droid creates good separation of concerns.

.factory/droids/code-reviewer.md (1)

1-56: Comprehensive code review framework with clear process and output structure.

The code-reviewer droid specification provides a structured three-part review process that covers plan alignment, code quality, and architecture. The issue categorization (Critical/Important/Minor) helps prioritize findings. The output format example is clear and encourages concise yet thorough feedback. SOLID principles and security/performance considerations are appropriately included in the architecture review checklist.

.factory/skills/defense-in-depth/SKILL.md (1)

1-127: Excellent defense-in-depth validation pattern documentation.

The four-layer validation approach is clearly explained with concrete TypeScript examples and a real-world session example. The pattern (entry point, business logic, environment guards, debug instrumentation) provides actionable guidance for implementing robust validation. The document effectively argues why multiple layers are necessary and shows how each layer catches different failure modes.

.factory/skills/executing-plans/SKILL.md (1)

1-76: Well-structured plan execution workflow.

The executing-plans skill provides a clear, batched approach to implementation with explicit checkpoints and sub-skill integration. The process is concise, the stopping conditions are well-defined (line 54-60), and the handoff to finishing-a-development-branch is properly mandatory (line 49). Good use of explicit announcements and verification points.

.factory/commands/write-plan.md (1)

1-7: Concise and clear command reference.

The write-plan.md command reference is minimal and correct. It properly references the writing-plans skill and provides the exact loading syntax. Consistent with other command documentation in the PR.

.factory/droids/plan.md (1)

1-35: Well-structured droid definition that clearly scopes planning research capabilities.

The frontmatter, tools mapping, and workflow guidance are clear and appropriate for a planning-phase research agent. No concerns.

.factory/skills/root-cause-tracing/SKILL.md (1)

1-174: Excellent root-cause tracing methodology with clear examples and practical guidance.

The skill documentation provides a systematic approach to tracing bugs backward through call stacks, includes concrete examples, instrumentation patterns, and integrates well with the companion find-polluter.sh script. The examples and decision trees are clear and actionable.

.factory/skills/using-superpowers/SKILL.md (1)

1-100: Well-designed mandatory protocol with clear enforcement mechanisms and anti-rationalization patterns.

The skill establishes a clear contract about skill discovery and usage, prevents common justifications for skipping the protocol, and integrates TodoWrite for checklist tracking. The tone is appropriately firm about mandatory vs. flexible patterns.

.factory/skills/subagent-driven-development/SKILL.md (1)

176-188: Integration section clearly documents required skills and dependencies.

The skill properly declares its dependencies on writing-plans, requesting-code-review, and finishing-a-development-branch, enabling clear upstream/downstream workflow orchestration. This is well-structured.

.factory/AGENTS.md (1)

1-80: Protocol effectively establishes system-level override with clear tool mapping and droid dispatch guidance.

The AGENTS.md document successfully bridges Superpowers protocol requirements to Droid CLI's native tooling (Skill, Task, TodoWrite, Execute). The workflow chain and critical rules are well-defined. The tool mapping table at lines 30-38 and droid dispatch table at lines 40-54 provide clear, actionable guidance for practitioners.

.factory/skills/root-cause-tracing/find-polluter.sh (1)

22-23: Based on the authoritative web search results from GNU findutils documentation, I can now provide my final assessment.

The review comment is technically incorrect. The web search clearly states that in find -path:

  • * can match / (unlike in find -name)
  • Therefore ** can match multiple directory levels including slashes
  • The pattern src/**/*.test.ts should work correctly with find -path

The review comment's core claim—that find . -path "$TEST_PATTERN" doesn't work with glob patterns like 'src/**/*.test.ts'—is based on a misconception about how find -path handles patterns.


find -path correctly handles ** patterns with glob matching including directory separators.

Line 22's use of find . -path "$TEST_PATTERN" is not problematic. The find -path command uses shell glob (fnmatch) semantics where * can match / characters, meaning ** patterns correctly match multiple directory levels recursively. The pattern 'src/**/*.test.ts' will work as intended.

No fix is required for this code.

.factory/skills/writing-skills/SKILL.md (1)

293-293: Replace emphasis with proper heading.

Line 293 uses emphasis (**Code in Flowcharts**) where a heading would be more appropriate (MD036). Use ### instead:

-### ❌ Code in Flowcharts
+### ❌ Code in Flowcharts

Actually, looking at context, the heading already exists. This appears to be a false positive from markdownlint.

.factory/commands/brainstorm.md (1)

1-6: File structure looks good.

This command definition is properly minimal and references the brainstorming skill. Ensure the brainstorming skill exists at .factory/skills/brainstorming/SKILL.md (referenced in PR objectives but not in provided files).

.factory/skills/systematic-debugging/test-academic.md (1)

1-13: File structure and content are appropriate.

This academic test is well-structured and follows the test-pressure framework. Verify that the referenced skills/debugging/systematic-debugging skill exists and contains the content expected by the test questions.

.factory/install.sh (1)

67-67: Glob expansion behavior confirmed as a valid concern, but repository access is unavailable for specific verification.

The web search confirms the underlying risk is real: by default, unquoted globs in bash that don't match expand to their literal string pattern. In line 67 (cp "${SUPERPOWERS_DIR}/.factory/droids/"* "${FACTORY_DIR}/droids/" 2>/dev/null || true), if no files exist, the glob expands to the literal string *.../droids/*, and cp fails with "cannot stat" — but the error is silenced by 2>/dev/null || true, resulting in zero files copied without indication of failure.

The suggested fix using find with -exec is a valid approach to avoid this pitfall, as find handles non-existent or empty directories gracefully without glob expansion side effects.

However, I cannot verify:

  • Whether .factory/droids/ and .factory/commands/ directories are actually empty or populated in the repository
  • Whether this manifests as an actual problem in practice for this specific installation script

The concern is technically sound for the general case. To definitively resolve this, manual inspection of the repository structure and testing the actual installer behavior would be needed.

.factory/INSTALL.md (1)

1-188: Installation guide is well-structured and comprehensive.

The guide provides clear pathways for multiple installation scenarios (one-line, quick via Droid, manual step-by-step), detailed verification tests, and good troubleshooting coverage. The checklist format and verification tests are particularly helpful for users validating their setup.

.factory/skills/systematic-debugging/test-pressure-2.md (1)

1-68: Realistic pressure scenario effectively tests decision-making.

This pressure test realistically portrays sunk cost fallacy and time pressure in debugging contexts, providing three credible options (A: restart systematic investigation, B: pragmatic timeout solution, C: balanced middle ground). The scenario serves as effective training for recognizing when shortcuts may be justified versus when systematic investigation is needed.

.factory/skills/systematic-debugging/test-pressure-3.md (1)

1-68: Authority pressure scenario effectively illustrates methodology resistance.

This scenario realistically portrays how technical expertise and social hierarchy can create pressure to skip systematic processes. The three options (A: insist on investigation, B: defer to authority, C: compromise with quick check) effectively capture the real tension between following methodology and team dynamics. Useful for training judgment under organizational pressure.

docs/README.factory.md (1)

1-254: Comprehensive and well-organized documentation.

The documentation effectively maps Superpowers concepts to Droid CLI's native tools and workflows, provides clear installation and verification pathways, documents the workflow progression, and addresses troubleshooting and differences from Claude Code. The architecture section and tool mapping tables are particularly helpful for understanding integration details.

.factory/skills/brainstorming/SKILL.md (1)

1-54: Brainstorming skill is well-defined with clear process.

The skill provides a structured approach to design refinement with logical phases (understanding → exploring → presenting), appropriate guidance on presentation format (200-300 word sections with validation), and clear integration points with downstream skills. The emphasis on one question at a time and multiple-choice preferences is practical.

.factory/skills/systematic-debugging/CREATION-LOG.md (1)

1-118: Creation log effectively documents skill extraction and bulletproofing methodology.

This reference document provides valuable meta-documentation showing how the systematic-debugging skill was extracted from the AGENTS.md protocol, structured following skill-creation guidelines, and bulletproofed against rationalization. The testing approach with four validation scenarios and the emphasis on anti-patterns as cognitive friction is insightful. Useful template for future skill creation efforts.

Comment thread .factory/install.sh
Comment on lines +43 to +52
if [[ -d "$SUPERPOWERS_DIR" ]]; then
echo " Repository exists, updating..."
cd "$SUPERPOWERS_DIR"
git pull --quiet
echo -e "${GREEN} ✓ Repository updated${NC}"
else
echo " Cloning repository..."
git clone --quiet "$REPO_URL" "$SUPERPOWERS_DIR"
echo -e "${GREEN} ✓ Repository cloned${NC}"
fi
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 | 🟡 Minor

Verify git pull success before proceeding.

Line 46 runs git pull --quiet without checking the exit code. If git pull fails (e.g., merge conflict, network error), the script continues with outdated code. Consider:

 cd "$SUPERPOWERS_DIR"
-git pull --quiet
+git pull --quiet || { echo -e "${RED}✗ Failed to update repository${NC}"; exit 1; }
 echo -e "${GREEN}  ✓ Repository updated${NC}"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if [[ -d "$SUPERPOWERS_DIR" ]]; then
echo " Repository exists, updating..."
cd "$SUPERPOWERS_DIR"
git pull --quiet
echo -e "${GREEN} ✓ Repository updated${NC}"
else
echo " Cloning repository..."
git clone --quiet "$REPO_URL" "$SUPERPOWERS_DIR"
echo -e "${GREEN} ✓ Repository cloned${NC}"
fi
if [[ -d "$SUPERPOWERS_DIR" ]]; then
echo " Repository exists, updating..."
cd "$SUPERPOWERS_DIR"
git pull --quiet || { echo -e "${RED}✗ Failed to update repository${NC}"; exit 1; }
echo -e "${GREEN} ✓ Repository updated${NC}"
else
echo " Cloning repository..."
git clone --quiet "$REPO_URL" "$SUPERPOWERS_DIR"
echo -e "${GREEN} ✓ Repository cloned${NC}"
fi
🤖 Prompt for AI Agents
In .factory/install.sh around lines 43 to 52, the script runs git pull --quiet
without checking its exit status; modify it to test the git pull result
immediately (e.g., if ! git pull --quiet; then echo an error with details to
stderr and exit 1) so the script stops on pull failures (optionally attempt a
safe recovery like git fetch && git reset --hard origin/<branch> only after
explicit success checks) to avoid continuing with outdated code.

Comment on lines +55 to +62
| Scenario | Pattern |
|----------|---------|
| Wait for event | `waitFor(() => events.find(e => e.type === 'DONE'))` |
| Wait for state | `waitFor(() => machine.state === 'ready')` |
| Wait for count | `waitFor(() => items.length >= 5)` |
| Wait for file | `waitFor(() => fs.existsSync(path))` |
| Complex condition | `waitFor(() => obj.ready && obj.value > 10)` |

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 | 🟡 Minor

Align documentation snippets with the actual helper signatures

There are a couple of small consistency issues that might trip up someone copy‑pasting:

  • The generic waitFor implementation includes a description parameter, but the “Quick Patterns” table shows calls like waitFor(() => items.length >= 5) with only a condition argument.
  • The “When Arbitrary Timeout IS Correct” snippet uses await waitForEvent(manager, 'TOOL_STARTED');, while the concrete implementation in example.ts is waitForEvent(threadManager, threadId, eventType, timeoutMs?).

It would be clearer to either:

  • Update the examples to include the description parameter and the threadId argument (and consistent parameter ordering), or
  • Explicitly note that those snippets are pseudocode and point readers directly to .factory/skills/condition-based-waiting/example.ts for the exact signatures.

Also applies to: 65-85, 102-107

🤖 Prompt for AI Agents
.factory/skills/condition-based-waiting/SKILL.md around lines 55-62 (and also
apply same changes to lines 65-85 and 102-107): the documentation snippets show
simplified calls to waitFor and waitForEvent that don’t match the actual helper
signatures (missing the description parameter for waitFor and missing/incorrect
threadId and parameter order for waitForEvent). Update the examples to use the
real signatures (include the description argument in waitFor calls and include
threadId and correct parameter order and optional timeout in waitForEvent
calls), or alternatively add a brief note above the “Quick Patterns” table
stating these are pseudocode and point readers to
.factory/skills/condition-based-waiting/example.ts for exact signatures; make
the change consistently in all referenced line ranges.

## Forbidden Responses

**NEVER:**
- "You're absolutely right!" (explicit CLAUDE.md violation)
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 | 🟡 Minor

Update terminology reference from CLAUDE.md to AGENTS.md.

Line 30 references "CLAUDE.md" which should be "AGENTS.md" per the PR's terminology shift to Factory/Droid CLI compatibility. This creates inconsistency with the updated protocol documentation.

Apply this diff:

-- "You're absolutely right!" (explicit CLAUDE.md violation)
+- "You're absolutely right!" (explicit AGENTS.md violation)
🤖 Prompt for AI Agents
In .factory/skills/receiving-code-review/SKILL.md around line 30 the terminology
reference incorrectly mentions "CLAUDE.md"; update that reference to "AGENTS.md"
to match the PR's terminology shift and ensure consistency with the
Factory/Droid CLI protocol documentation. Replace the string/mention "CLAUDE.md"
with "AGENTS.md" wherever it appears on that line and update any adjacent
phrasing if needed to maintain grammatical consistency.

- Reference working tests/code
- Involve your human partner if architectural

**Signal if uncomfortable pushing back out loud:** "Strange things are afoot at the Circle K"
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 | 🟡 Minor

Replace obscure cultural reference with explicit directive.

Line 129 uses "Strange things are afoot at the Circle K" (a Bill & Ted reference) to signal discomfort. This is unclear for readers unfamiliar with the film, and the intent should be stated directly for a workflow document.

Apply this diff:

-**Signal if uncomfortable pushing back out loud:** "Strange things are afoot at the Circle K"
+**Signal if uncomfortable pushing back out loud:** Use a clear marker (e.g., "I'm concerned about pushing back here") and ask for guidance before proceeding.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Signal if uncomfortable pushing back out loud:** "Strange things are afoot at the Circle K"
**Signal if uncomfortable pushing back out loud:** Use a clear marker (e.g., "I'm concerned about pushing back here") and ask for guidance before proceeding.
🤖 Prompt for AI Agents
In .factory/skills/receiving-code-review/SKILL.md around line 129, replace the
obscure Bill & Ted reference "Strange things are afoot at the Circle K" with an
explicit directive that tells reviewers what to do when they feel uncomfortable
pushing back; change the line to a clear instruction such as "If you feel
uncomfortable pushing back, explicitly say so (e.g., 'I’m not comfortable
pushing back on this') and explain your concerns or request time to revisit the
decision."

- [ ] Added explicit counters for each loophole
- [ ] Updated rationalization table
- [ ] Updated red flags list
- [ ] Updated description ith violation symptoms
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 | 🟡 Minor

Fix typo in checklist item.

Line 330 contains a typo: "Updated description ith violation symptoms" should be "Updated description with violation symptoms".

Apply this fix:

-    - [ ] Updated description ith violation symptoms
+    - [ ] Updated description with violation symptoms
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- [ ] Updated description ith violation symptoms
- [ ] Updated description with violation symptoms
🧰 Tools
🪛 LanguageTool

[grammar] ~330-~330: Ensure spelling is correct
Context: ...ed flags list - [ ] Updated description ith violation symptoms - [ ] Re-tested - ag...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
In .factory/skills/testing-skills-with-subagents/SKILL.md around line 330, fix
the typo in the checklist item by replacing "Updated description ith violation
symptoms" with "Updated description with violation symptoms"; update the line
exactly to correct "ith" to "with" and keep the surrounding checklist formatting
unchanged.


**If found:** Use that directory. If both exist, `.worktrees` wins.

### 2. Check CLAUDE.md
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 | 🟡 Minor

Update CLAUDE.md reference to align with AGENTS.md terminology.

Line 30 references CLAUDE.md which should be updated to AGENTS.md per the PR's terminology shift for Factory/Droid CLI compatibility.

Apply this diff:

-### 2. Check CLAUDE.md
+### 2. Check AGENTS.md
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### 2. Check CLAUDE.md
### 2. Check AGENTS.md
🤖 Prompt for AI Agents
In .factory/skills/using-git-worktrees/SKILL.md around line 30, update the
reference "CLAUDE.md" to "AGENTS.md" so terminology matches the PR; replace the
filename and any link or mention at that line to point to AGENTS.md (and adjust
link path if needed) ensuring the text and link target are consistent with the
new AGENTS.md naming.

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