omcustom:fsd

SkillDev tools

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.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the omcustom:fsd skill

What this skill tells your AI

The instructions your AI receives, as published by baekenough/oh-my-customcode in .claude/skills/fsd/SKILL.md and read by ahel’s review.

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 stateAction
CI passing, auto-mergeableMerge 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 causeDiagnose; if fixable within iteration, fix and merge; otherwise defer
Breaking change / design judgment requiredDefer and surface to user
Explicitly excluded by user this sessionSkip (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에 위임된다.

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:

RuleApplies
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

ScenarioUse FSD?
Multiple eligible issues ready to process autonomouslyYES
Session where the user wants to "let it run" through the backlogYES
Verifying the autonomous release loop pattern from session memoryYES
Single targeted issue fixNO — use /pipeline auto-dev directly
Exploratory research / planning onlyNO — use /research or /deep-plan
Only one issue and it needs human judgmentNO — 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 / RuleRole
goalDisciplined goal-to-execution wrapper — objective parse, gap detection, R020 verification
omcustom-loopSession auto-continuation via SubagentStop hook — keeps the loop alive during background agent work
pipeline/pipeline auto-dev — the core release pipeline per iteration
homeworkRetrospective 찐빠 audit gate per iteration
mgr-gitnerdPR 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). 즉 위 지시를 지켰다는 사실은 무인 실행의 증거가 아니다. 자율 루프 진입 전에 유효 모드를 실측한다:

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

Signals

GitHub stars
34
Forks
6
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
omcustom-fsd
Source
github.com/baekenough/oh-my-customcode