Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
## GitHub

- Your primary method for interacting with GitHub should be the GitHub CLI.
- Unless in GitHub issues, before DONE, use AskUserQuestion: "Ready to commit?" → if yes, git add/commit/push/PR. Never run those otherwise.

## Plans

Expand Down
5 changes: 5 additions & 0 deletions .claude/commands/brainstorm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
description: Explore requirements through Q&A before planning
---

/workflows:brainstorm $ARGUMENTS
42 changes: 42 additions & 0 deletions .claude/commands/lfg.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: lfg
description: Full autonomous engineering workflow
argument-hint: "[feature description]"
---

Run these slash commands in order. Do not do anything else.

1. `/ralph-wiggum:ralph-loop "finish all slash commands" --completion-promise "DONE"`
2. `/workflows:plan $ARGUMENTS`
3. `/compound-engineering:deepen-plan`
4. `/workflows:work`
5. `/changeset`
6. `/workflows:review`
7. `/compound-engineering:resolve_todo_parallel`
8. `/compound-engineering:test-browser`
9. Output `<promise>DONE</promise>` when video is in PR

## Overrides (apply to ALL commands above)

**plan:**

- Final checklist/acceptance criteria: include test-browser if any browser-based features

**deepen-plan:**

- Context7: only query when not covered by skills

**work:**

- Task loop: For UI tasks, run test-browser BEFORE marking complete (don't guess - verify visually)
- Never mark UI task complete without browser verification

**review:**

- performance-oracle: don't over-engineer, ship fast, keep simple

**feature-video:**

- Prefer PR comment over description update if PR already open

Start with step 1 now.
8 changes: 8 additions & 0 deletions .claude/commands/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
description: Create implementation plan from requirements
---

Run these commands in order:

1. `/workflows:plan $ARGUMENTS`
2. `/compound-engineering:deepen-plan`: Context7: only query when not covered by skills
11 changes: 11 additions & 0 deletions .claude/commands/review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
description: Review code and update PR with feedback
---

Run these commands in order:

1. `/workflows:review $ARGUMENTS`
2. `/compound-engineering:resolve_todo_parallel`
3. `/compound-engineering:test-browser`

- performance-oracle: don't over-engineer, ship fast, keep simple
11 changes: 11 additions & 0 deletions .claude/commands/work.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
description: Implement changes based on plan or requirements
---

Run these commands in order:

1. `/workflows:work $ARGUMENTS`
2. `/changeset`

- Task loop: For UI tasks, run test-browser BEFORE marking complete (don't guess - verify visually)
- Never mark UI task complete without browser verification
71 changes: 71 additions & 0 deletions .github/workflows/claude-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Claude Code Review

on:
pull_request:
types: [opened, synchronize, ready_for_review, reopened]

jobs:
claude-review:
if: github.event.pull_request.user.login == 'zbeyens'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Cache bun
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-

- name: Install dependencies
run: bun install

- name: Run Claude Code Review
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

prompt: /review
track_progress: true

plugin_marketplaces: |
https://github.com/EveryInc/compound-engineering-plugin.git
https://github.com/udecode/dotai.git
plugins: |
compound-engineering@every-marketplace
dig@dotai
debug@dotai
test@dotai

settings: |
{
"env": {
"BASH_DEFAULT_TIMEOUT_MS": "1800000"
},
"permissions": {
"allow": ["Bash", "Edit", "Glob", "Grep", "Read", "Task", "Write", "WebFetch", "WebSearch"]
}
}
claude_args: |
--max-turns 1000

additional_permissions: |
actions: read

150 changes: 150 additions & 0 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Claude Code

on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]

jobs:
# Interactive mode - responds to @claude mentions with tracking comments
claude:
if: |
github.actor == 'zbeyens' && (
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
)
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Cache bun
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-

- name: Install dependencies
run: bun install

- name: Run Claude Code
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

# No prompt = interactive mode with tracking comments

plugin_marketplaces: |
https://github.com/EveryInc/compound-engineering-plugin.git
https://github.com/udecode/dotai.git
plugins: |
compound-engineering@every-marketplace
dig@dotai
debug@dotai
test@dotai

settings: |
{
"env": {
"BASH_DEFAULT_TIMEOUT_MS": "1800000"
},
"permissions": {
"allow": ["Bash", "Edit", "Glob", "Grep", "Read", "Task", "Write", "WebFetch", "WebSearch"]
}
}
claude_args: |
--max-turns 1000

additional_permissions: |
actions: read

# Automation mode - responds to /commands
slash-commands:
if: |
github.actor == 'zbeyens' && (
(github.event_name == 'issue_comment' && startsWith(github.event.comment.body, '/')) ||
(github.event_name == 'pull_request_review_comment' && startsWith(github.event.comment.body, '/'))
)
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Cache bun
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-

- name: Install dependencies
run: bun install

- name: Run Claude Code
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

# Pass comment body for slash commands
prompt: ${{ github.event.comment.body }}
track_progress: true

plugin_marketplaces: |
https://github.com/EveryInc/compound-engineering-plugin.git
https://github.com/udecode/dotai.git
plugins: |
compound-engineering@every-marketplace
dig@dotai
debug@dotai
test@dotai

settings: |
{
"env": {
"BASH_DEFAULT_TIMEOUT_MS": "1800000"
},
"permissions": {
"allow": ["Bash", "Edit", "Glob", "Grep", "Read", "Task", "Write", "WebFetch", "WebSearch"]
}
}
claude_args: |
--max-turns 1000

additional_permissions: |
actions: read
77 changes: 77 additions & 0 deletions docs/brainstorms/2026-01-30-github-slash-commands-brainstorm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
date: 2026-01-30
topic: github-slash-commands
---

# GitHub Slash Commands for Claude Code Action

## What We're Building

GitHub Actions-based slash commands that allow commenting `/lfg`, `/brainstorm`, `/plan`, `/work`, `/review` on PRs/issues to trigger Claude workflows.

**Commands:**

| Command | Purpose | Auto-commit? | Output |
|---------|---------|--------------|--------|
| `/lfg` | Full autonomous workflow | Yes | Branch + PR link |
| `/brainstorm` | Explore requirements | No | Questions/answers in comments |
| `/plan` | Create implementation plan | No | Plan in comment |
| `/work` | Implement changes | Yes | Branch + PR link |
| `/review` | Review code, update PR | Yes | Review comments, PR updates |

## Why This Approach

**Considered:**
- A: Separate commands (5 files) - **chosen**
- B: Single command with args - less discoverable
- C: Workflow + helpers - unclear separation

**Chose A because:**
- Each command has distinct purpose/permissions
- Easy to iterate on individually
- Matches mental model of stepwise workflow

## Key Decisions

1. **Flexible ordering**: Any command works anytime. Auto-detects context from previous comments
2. **Auto-commit for code-producing commands**: `/lfg`, `/work`, `/review` auto-commit. `/brainstorm`, `/plan` don't
3. **PR creation**: Default Claude behavior - pushes branch, provides pre-filled PR link. User clicks to create
4. **Context detection**: Claude reads previous comments in thread to understand state

## Implementation Details

### Files to Create

```
.claude/commands/
├── brainstorm.md # /brainstorm - explore requirements
├── plan.md # /plan - create implementation plan
├── work.md # /work - implement changes
└── review.md # /review - code review + PR update
```

Note: `/lfg` already exists in `.claude/commands/lfg.md`

### Workflow File Updates

Existing `.github/workflows/claude.yml` handles `@claude` mentions.
Slash commands are detected automatically from `.claude/commands/` directory.

### Command Template Structure

```markdown
---
description: Brief description
allowed-tools: Bash(gh:*),Bash(bun:*),Edit,Read,Write
---

[Instructions for Claude]
```

## Open Questions

- None remaining - ready for planning

## Next Steps

→ `/workflows:plan` for implementation details
Loading
Loading