Full Self Driving — autonomous release loop that processes all auto-dev-eligible GitHub issues until none remain, by repeatedly running /pipeline auto-dev then /homework.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add baekenough/oh-my-customcode --skill fsd --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fsd?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/baekenough-fsd)More formats (shields.io, HTML) on the badges page.
---
name: omcustom:fsd
description: Full Self Driving — autonomous release loop that processes all auto-dev-eligible GitHub issues until none remain, by repeatedly running /pipeline auto-dev then /homework.
scope: harness
user-invocable: true
argument-hint: "[<max-releases>]"
version: 0.1.0
effort: high
---
# /omcustom:fsd — Full Self Driving
Autonomous release loop. Equivalent to running:
```
/goal "모든 이슈가 처리될 때까지" /loop "/pipeline auto-dev -> /homework"
```
This is a **thin alias / orchestrator skill**. It does not implement loop, issue-polling, release, or verification logic — it delegates entirely to existing skills.
## Usage
```
/omcustom:fsd # Run until all auto-dev-eligible issues are exhausted
/omcustom:fsd 3 # Optional: cap at N releases (default: unlimited)
```
No arguments are required. The default behavior runs until the auto-dev-eligible issue set is empty.
## What It Does
FSD expands into:
1. **`/goal` wrapper** — applies disciplined goal-to-execution workflow:
- Objective: "모든 이슈가 처리될 때까지"
- Delegates planning, gap detection, and R020 completion verification to the `goal` skill
2. **`/loop` recurrence** — self-paced loop (model decides cadence), each iteration runs:
1. `/pipeline auto-dev` — full release pipeline for the next eligible issue
2. `/homework` — retrospective 찐빠 audit gate
3. **Open PR processing** — merge or defer all open PRs before checking convergence
### Loop Convergence
The loop converges naturally when **both** conditions are met:
1. The auto-dev-eligible issue set reaches 0
2. All open PRs have been either merged or explicitly deferred
FSD processes **open PRs as part of each iteration**, not only issues. This includes dependabot PRs and any automatically created PRs. Issue eligibility follows `/pipeline auto-dev` label selection exactly:
- **Included**: `verify-ready` (preferred), unlabeled auto-dev candidates
- **Excluded**: `verify-done`, `needs-review`, `decision-needed` labels
Do NOT invent new label logic here — defer to the `pipeline` skill's auto-dev issue selection.
### PR Processing Rules
When open PRs are found during an iteration:
| PR state | Action |
|----------|--------|
| CI passing, auto-mergeable | Merge via mgr-gitnerd (R010) |
| CI failing with known pattern (e.g., dependabot frozen-lockfile cascade → `bun install` lockfile regeneration) | Fix CI, then merge |
| CI failing with unknown cause | Diagnose; if fixable within iteration, fix and merge; otherwise defer |
| Breaking change / design judgment required | Defer and surface to user |
| Explicitly excluded by user this session | Skip (honor directive persistence, R015) |
All PR merge operations are delegated to **mgr-gitnerd** (R010). After merging, verify ground-truth via `gh pr view` or `git log` before declaring done (R020).
Do NOT merge PRs that require user approval for architectural decisions. Surface them with a short summary and wait.
### `.claude/hooks/**` 이슈 — 무인 루프 분리 스코프
FSD는 사용자가 실시간 응답할 수 없는 무인 루프이므로, scope-selection의 R010 approval-required
path pre-check(`auto-dev.yaml`)가 `.claude/hooks/**` 대상 이슈를 발견하면 매 이터레이션마다
즉시 승인을 요청하지 않는다. 대신 그 이슈를 이번 스코프에서 **분리·이월**하고 나머지 적격 이슈로
계속 진행하며, `/homework` 반복 경계(게이트)에서 이월된 hooks 이슈들을 **1회 묶어** 승인 질문으로
제시한다. 승인을 받으면 R015 directive persistence로 세션 내 동일 카테고리에 지속 적용한다.
무인 여부의 판별 신호는 아래 「무인 모드 마커」 절이 정의한다.
### 무인 모드 마커 — 결정론적 판별 신호 (#1650 C)
`pipeline auto-dev`의 scope-selection Step 3가 요구하는 "무인 여부"는 산문 추론이 아니라 마커 파일로
판정한다. FSD 진입 시 오케스트레이터가 Bash로 아래 한 줄을 실행한다. 이 마커는 R010 「Exception:
Simple Tasks」의 carve-out(PPID 스코프 `/tmp` 런타임 상태 마커 — v1.1.61 신설)에 해당하므로
오케스트레이터가 직접 실행한다. 구조화된 파이프라인 상태(`/tmp/.claude-pipeline-*-{PPID}.json`)는 이
예외 대상이 아니며 기존대로 `tracker-checkpoint`에 위임된다.
```bash
printf '%s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" > "/tmp/.claude-fsd-$PPID"
```
- `$PPID`는 Bash 도구 셸의 부모, 즉 Claude Code 프로세스이며 호출 간 안정적이다(2026-09-03 실측: 두
호출 모두 동일 값).
- `claude -p`·예약 실행처럼 마커를 미리 만들 수 없는 경로는 env `OMCUSTOM_UNATTENDED=1`로 대체한다.
- `pipeline auto-dev` pre-triage Phase 0.6이 마커 존재 또는 env 값을 실측해 `unattended_mode` 상태를
산출하고, scope-selection Step 3는 그 상태로 `.claude/hooks/**` 이슈 분리·이월을 결정한다.
- 매 반복 시작 시 같은 명령으로 마커를 다시 써서 mtime을 갱신한다. Phase 0.6은 mtime이 6시간(360분)보다
오래된 마커를 **부재로 취급**한다 — 프로세스 크래시·PID 재사용으로 남은 마커가 이후 수동
`/pipeline auto-dev`를 무인으로 오판하지 않게 하는 가드다.
- 수렴(`[FSD Done]`), 릴리즈 cap 도달, safety classifier 차단으로 인한 중단, 사용자 인터럽트 — **어느
경로로 끝나든** `command rm -f "/tmp/.claude-fsd-$PPID"`로 마커를 제거한다 — 남겨두면
같은 세션의 이후 수동 `/pipeline auto-dev`가 무인으로 오판된다. `rm`이 alias(`trash`)로 셰이딩된
셸에서 `rm -f`는 거부되므로 `command`를 붙인다(R005, 2026-09-03 실측).
### Iteration Flow (per iteration)
```
[FSD Entry] write marker /tmp/.claude-fsd-$PPID
[FSD Iteration N]
├── /pipeline auto-dev → one release (PR create → merge → npm publish → milestone close)
├── /homework → extract 찐빠, confirm gate (or --dry-run if requested)
├── Open PR processing → for each open PR: merge (if CI-green + auto-mergeable)
│ fix-then-merge (known CI failure pattern)
│ defer+surface (design decision needed)
└── Check convergence: eligible issues = 0 AND open PRs = 0 (merged or deferred)?
├── YES → [FSD Done] converged naturally → command rm -f /tmp/.claude-fsd-$PPID
└── NO → cap reached or classifier block? → YES → [FSD Stop] → command rm -f /tmp/.claude-fsd-$PPID
→ NO → next iteration (re-write marker first)
```
## Safety and Discipline
Each iteration operates under full project rules — no relaxation because FSD is autonomous:
| Rule | Applies |
|------|---------|
| R001 (safety) | Destructive ops still require explicit approval. Credential guardrails always active. PR merges that risk data loss require explicit approval. |
| R009 (parallel) | Independent subtasks within each pipeline iteration run in parallel. |
| R010 (orchestration) | All file modifications delegated to specialist subagents. mgr-gitnerd for git ops including PR merges. |
| R015 (intent persistence) | If user explicitly defers a specific PR this session, honor that deferral — do not retry it. |
| R017 (sync verification) | mgr-sauron passes required before any commit. |
| R020 (completion verification) | Each release verified via `npm view`, `gh release view`, closed issues before `[Done]`. PR merges verified via `gh pr view` ground-truth before declaring iteration complete. |
| cost-cap advisory (`cost-cap-advisor.sh`, Conversation Block) | FSD는 사용자가 명시 호출한 다중 릴리즈 루프라 세션 비용이 상한(기본 $5)을 필연적으로 넘는다. advisory 발화는 루프를 멈추는 신호가 아니며, 오케스트레이터는 발화 사실과 누적 비용을 반복 경계(homework 게이트)에서 사용자에게 고지한다. 상한을 올리려면 `CLAUDE_COST_CAP`(v1.1.61 세션 실측: 착수 직후 $5.38에서 발화). |
`/homework` runs as a **retrospective gate** between iterations — findings go through `omcustom-feedback`'s Phase 4A confirmation gate. The loop does NOT skip homework on the grounds that it is "automated". If homework requires user confirmation (e.g., to file a feedback issue), the loop pauses and waits.
**Homework 제출 게이트 묶음 (opt-in, #1652 #4)**: 기본 계약은 위와 같이 **반복마다** 게이트를
제시하는 것이다. 사용자가 세션 중 명시적으로 지시하거나(예: "homework 게이트는 수렴 시점에 1회로
묶어라") 무인 실행을 선언하며 묶음을 지정한 경우에만, homework 아티팩트(`homework-{HHmmss}.md`)는
반복마다 기록하되 `omcustom-feedback` Phase 4A 제출 게이트는 수렴 시점(또는 릴리즈 cap 도달 시점)에
**1회** 묶어 제시한다 — 이월된 `.claude/hooks/**` 승인 질문과 같은 자리에서 함께 제시한다. 묶음
여부는 사용자 결정 사항이며 오케스트레이터가 단독으로 선택하지 않는다(v1.1.59/60 세션에서
오케스트레이터가 단독 결정한 것이 스킬 계약 이탈로 회고됐다). 한 번 지시되면 R015 directive
persistence로 세션 내 유지된다. 묶음 여부는 `unattended_mode`(마커·env)에서 **도출하지 않는다** —
무인 판별은 hooks 이슈 분리·이월에만 쓰이고, 게이트 묶음은 사용자 지시가 유일한 트리거다.
If a release operation triggers the safety classifier, the current iteration stops and surfaces the block to the user before continuing.
## When to Use
| Scenario | Use FSD? |
|----------|----------|
| Multiple eligible issues ready to process autonomously | YES |
| Session where the user wants to "let it run" through the backlog | YES |
| Verifying the autonomous release loop pattern from session memory | YES |
| Single targeted issue fix | NO — use `/pipeline auto-dev` directly |
| Exploratory research / planning only | NO — use `/research` or `/deep-plan` |
| Only one issue and it needs human judgment | NO — use `/pipeline auto-dev` with manual oversight |
## When NOT to Use
- When issues require stakeholder approval or design decisions before implementation
- When the issue set includes `decision-needed` or `needs-review` items only (loop converges immediately — just use `/pipeline auto-dev` once)
- When cost sensitivity is high and the issue backlog is large — inspect the eligible set first before running FSD
## Optional Release Cap
Pass a numeric argument to cap at N releases:
```
/omcustom:fsd 3 # Process at most 3 issues this FSD run
```
This corresponds to the `-max` parameter used in the manual pattern. Default is unlimited (run until eligible issues exhausted). The cap is advisory — the pipeline itself may stop earlier if the eligible set runs out before the cap is reached.
## Session 114 Precedent
This skill was extracted from the manual pattern used in Session 114 (2026-06-09):
```
/goal "모든 이슈가 처리될 때까지" /loop "/pipeline auto-dev -> /homework"
```
That session ran 2 iterations (v0.177.0 and v0.178.0) before converging with 0 eligible issues remaining. FSD codifies this pattern as a first-class invocable command.
## Cross-References
| Skill / Rule | Role |
|--------------|------|
| `goal` | Disciplined goal-to-execution wrapper — objective parse, gap detection, R020 verification |
| `omcustom-loop` | Session auto-continuation via SubagentStop hook — keeps the loop alive during background agent work |
| `pipeline` | `/pipeline auto-dev` — the core release pipeline per iteration |
| `homework` | Retrospective 찐빠 audit gate per iteration |
| `mgr-gitnerd` | PR merge operations — all open PR merges delegated here (R010) |
| R001 (safety) | Destructive ops require approval; credential guardrails; risky PR merges require explicit approval |
| R009 (parallel execution) | Parallel subtasks within each pipeline iteration |
| R010 (orchestrator coordination) | All file writes delegated; mgr-gitnerd for git including PR merges |
| R015 (intent persistence) | User PR deferral decisions honored for the session |
| R017 (sync verification) | mgr-sauron required before commit/push |
| R020 (completion verification) | Actual outcome verified before declaring each release or PR merge done |
## Design Notes
This skill is intentionally a **thin alias**. It does NOT duplicate:
- Issue polling logic (owned by `pipeline`)
- Loop cadence / auto-continuation (owned by `omcustom-loop` + SubagentStop hook)
- Release pipeline steps (owned by `pipeline auto-dev`)
- Retrospective analysis (owned by `homework`)
- PR merge execution (owned by `mgr-gitnerd`)
- Completion verification (owned by R020 + `goal`)
If any of those underlying skills evolve, FSD automatically benefits — its only responsibility is declaring the intent and forwarding to the right components.
## Permission Mode Note
When this skill delegates work via Agent tool calls, ALL Agent tool calls MUST include `mode: "bypassPermissions"` per R010 Universal bypassPermissions.
⚠ **그 파라미터는 CC v2.1.212+ 에서 무시되며, 프로젝트 scope `permissions.defaultMode` 역시
CC v2.1.257+ 에서 무시된다(#1644).** 즉 위 지시를 지켰다는 사실은 **무인 실행의 증거가 아니다**.
자율 루프 진입 전에 유효 모드를 실측한다:
```bash
jq -r '.permissions.defaultMode // "unset"' ~/.claude/settings.json 2>/dev/null || echo unset
```
`bypassPermissions` 가 아니면 루프 도중 permission 프롬프트로 정지할 수 있으므로,
`--permission-mode bypassPermissions` 로 재시작하거나 사람이 지켜보는 실행임을 전제한다.
(파이프라인 쪽 배선은 `pipeline auto-dev` 의 pre-triage Phase 0.5 가 담당한다.)
⚠ **커밋 위임 타임아웃 (#1645)**: 메인 워크트리의 `.husky/pre-commit` 이 전체 테스트
스위트(약 165초)를 돌리므로, `git commit` 을 위임할 때는 Bash `timeout: 400000` 을 명시한다.
기본값 120000ms 로는 exit 143(SIGTERM)으로 끊긴다. `--no-verify` 우회는 금지(R010).
## Artifact Output
Artifacts from each iteration follow the conventions of the constituent skills:
- Pipeline artifacts: `.claude/outputs/sessions/{YYYY-MM-DD}/pipeline-auto-dev-{HHmmss}.md`
- Homework artifacts: `.claude/outputs/sessions/{YYYY-MM-DD}/homework-{HHmmss}.md`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!