ワンクリックで
oh-plan
Create GitHub issues from task descriptions or session context. Investigates when needed, skips when context exists.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Create GitHub issues from task descriptions or session context. Investigates when needed, skips when context exists.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Do the work. Pre-flight, build, detect drift, salvage if needed. Use when you have a clear aim and are ready to implement.
Resolve multi-dependency fan-in by merging dependency PRs into a common base and updating issue dependencies
Review and merge open PRs for GitHub issues as a cohesive batch
Claim a GitHub issue, create its branch and draft PR before implementation, execute the work in isolation, and hand the completed draft to RNA's full ship gate.
Check work and detect drift before committing. A second opinion that catches misalignment early. Use at natural pause points, before PRs, or when something feels off.
Agent-led PR/working-tree review triage. Start from the diff, add RNA graph/business context only where it changes review decisions, and state when raw git diff is enough.
| name | oh-plan |
| description | Create GitHub issues from task descriptions or session context. Investigates when needed, skips when context exists. |
Creates well-structured GitHub issues ready for oh-task agents. Works in two modes:
.oh/<session>.md context, skips investigation, creates issues# Task mode - investigate from scratch
/oh-plan "Add dark mode support to the dashboard"
# Session mode - use existing context from skills workflow
/oh-plan auth-refactor
At the start, check if the argument matches an existing session file:
If .oh/<arg>.md exists AND contains ## Solution Space:
→ Session mode (skip investigation, use context)
Else:
→ Task mode (investigate, ask questions)
Shared setup for both session and task mode, before creating any issue:
gh label create oh-planned --description "Created via oh-plan skill" --color "0E8A16" 2>/dev/null || gh label view oh-planned >/dev/null
When .oh/<session>.md exists with solution-space context:
Read session file and extract:
## Aim → Goal for issues## Problem Space → Constraints, terrain, assumptions## Solution Space → Selected approach, trade-offs accepted## Problem Statement → Framing (if present)Skip investigation - context already gathered by grounding skills
Skip clarifying questions - decisions already made during solution-space
Decompose the selected solution into right-sized issues:
Create GitHub issues with enriched context from session:
gh issue create --title "<title>" --label "oh-planned" --body "$(cat <<'EOF'
## Goal
<from Aim section>
## Context
<from Problem Space: constraints, terrain>
<from Solution Space: selected approach>
## Acceptance Criteria
- [ ] <derived from solution trade-offs>
- [ ] <derived from aim feedback signals>
## Trade-offs Accepted
<from Solution Space>
## Notes
<from Problem Space assumptions>
EOF
)"
Update session file with created issues:
---
session: <session>
artifact_type: github-plan
updated: <timestamp>
---
## Plan
**Updated:** <timestamp>
**Issues:** #43, #44, #45
$ /oh-plan auth-refactor
Found session file: .oh/auth-refactor.md
Reading context...
- Aim: Users complete signup in under 60 seconds
- Problem: Current flow has 5 steps, competitors have 2
- Solution: Collapse to email + password, defer profile to post-signup
- Trade-offs: Less data upfront, need progressive profiling later
Decomposing into issues...
Created 2 issues:
#43: "Simplify signup to email + password only"
- Remove name, company, role fields from signup
- Add post-signup redirect to profile completion
- Depends on: none
#44: "Add progressive profile completion flow"
- Prompt for missing fields on first dashboard visit
- Track completion percentage
- Depends on: #43
Updated .oh/auth-refactor.md with issue links.
Done. Issues ready for /oh-task.
When no session file exists (current behavior):
Explore the codebase to understand:
repo_map and search first for architecture, symbols, artifacts, neighbors, and impact.Ask clarifying questions via AskUserQuestion:
Assess complexity and determine decomposition:
Create GitHub issue(s) with the oh-planned label:
# Create issue
gh issue create --title "<clear, actionable title>" --label "oh-planned" --body "$(cat <<'EOF'
## Goal
<1-2 sentences describing what we're trying to achieve>
## Context
<relevant background - files identified, patterns to follow, constraints>
## Acceptance Criteria
- [ ] Criterion 1 (specific, testable)
- [ ] Criterion 2
- [ ] Criterion 3
## Notes
<any technical decisions, edge cases, or things to watch out for>
EOF
)"
Signal completion: Call signal_completion(status: "success") to notify the orchestrator.
Fallback: If signal_completion is not available, output COMPLETION: status=success as your final message.
Issues created by oh-plan should be:
Bias toward focused issues. A well-scoped issue that does one thing well is better than a multifaceted issue that tries to do many things. When genuinely uncertain, prefer splitting - but don't create trivial issues.
Split into multiple issues when ANY of these apply:
Keep as one issue when:
Consider a separate integration issue when connecting components involves:
Don't create integration issues for:
Pattern when integration IS complex:
Issue #1: "Add theme persistence API" (Foundation)
Issue #2: "Add theme toggle component" (Feature)
Issue #3: "Wire theme system with fallback handling" (Integration - Depends on #1, #2)
- Handle API failures gracefully
- System preference detection fallback
- Theme flicker prevention on load
Task: "Add dark mode support to the dashboard"
Over-decomposed (too many trivial issues):
Issue #1: Add preferences API
Issue #2: Add toggle component
Issue #3: Add CSS variables
Issue #4: Wire toggle to API
Issue #5: Wire CSS to components
Issue #6: Handle loading states
Under-decomposed (one big issue):
Issue #1: Add dark mode support (everything)
Right-sized:
Issue #1: "Add user preferences API with theme support" (Foundation)
- GET/POST /api/preferences
- Includes theme field
Issue #2: "Add dark mode theming system" (Feature - Depends on #1)
- CSS custom properties for light/dark
- Theme toggle in settings
- Wire to preferences API
- Apply theme on app load
Issue #3: "Handle theme edge cases" (Polish - Depends on #2)
- Only if complex: system preference fallback,
theme flicker prevention, etc.
- Skip if straightforward
Use "Depends on #N" in issue body:
## Goal
Add dark mode theming system with toggle and persistence.
**Depends on:** #1 (preferences API)
| Outcome | Call |
|---|---|
| Issue(s) created successfully | signal_completion(status: "success") |
| User cancelled during questions | signal_completion(status: "error", error: "User cancelled") |
| Failed to create issue | signal_completion(status: "error", error: "<reason>") |
| Session file missing solution-space | signal_completion(status: "error", error: "Session missing Solution Space - run /solution-space first") |
$ /oh-plan "Add heartbeat monitoring for tmux sessions"
Exploring codebase...
Found relevant files:
- src/tmux/sessions.ts (session management)
- src/state/sessions.ts (session state tracking)
- src/index.ts (main loop)
I have a few questions to scope this correctly:
Q: What should happen when a session stops responding?
[1] Mark as crashed, notify user
[2] Auto-restart the session
[3] Just log and continue
User: 1
Q: How often should we check for heartbeats?
[1] Every 30 seconds (Recommended)
[2] Every minute
[3] Every 5 minutes
User: 1
Creating issue...
Created issue #67: "Add heartbeat monitoring for tmux sessions"
## Goal
Detect when tmux sessions stop responding and notify the user.
## Context
- Sessions are tracked in src/state/sessions.ts
- Tmux interactions in src/tmux/sessions.ts
- Need to add periodic check in main loop
## Acceptance Criteria
- [ ] Check session liveness every 30 seconds
- [ ] Mark session as "crashed" if not responding
- [ ] Send Telegram notification when session crashes
- [ ] Add crashed sessions to /status output
## Notes
- Use tmux has-session to check liveness
- Consider: what if tmux server itself is down?
signal_completion(status: "success")
Done. Issue #67 ready for /oh-task.
oh-plan works seamlessly with the Open Horizons skills workflow:
# Grounding phase (in skills workflow)
/aim auth-refactor
/problem-space auth-refactor
/solution-space auth-refactor
# Planning phase (oh-plan reads the context)
/oh-plan auth-refactor # Creates GitHub issues from session
# Execution phase
/oh-task 43 # Work the issues
This avoids duplicating investigation work - the grounding skills gather context, oh-plan transforms it into trackable issues.