Skip to content

fix(commands): all 15 /pf:* slash command bodies in Korean + /pf:help "What's new" stuck at v1.10.0 (must reach v1.14.1 + maintenance process) #113

Description

@ComBba

Summary

Every one of the 15 /pf:* slash command source files (plugins/preview-forge/commands/*.md) contains Korean prose. These files are loaded by Claude Code as command bodies and the Korean instructions cause Claude to render Korean output to the user — most visibly via /pf:help (per attached screenshot). This violates the English-only language policy ratified in #102 and merged into CONTRIBUTING.md via PR #106.

Compounding the language issue, commands/help.md's "What's new" section is frozen at semver v1.10.0 while the latest release is v1.14.1 — four minor versions behind. v1.11 / v1.12 / v1.13 / v1.14 all shipped material features that should have been narrated to users via /pf:help and were not.

#112 covered the plugin.json and marketplace.json description strings shown in /plugins and /plugin marketplace. #112 did not cover the slash command bodies or the help "What's new" version drift. This issue closes both gaps.

User-reported via screenshot of /pf:help (Claude Code session, 2026-04-26) showing a fully-Korean help table including Pro/Max 기본 포함. 별도 API 키 불필요., 14 Commands (stale), Plugin memory + workspace permission 초기화, etc. Follow-up user message (2026-04-26) added: What's new 도 버전이 최근 1.14.1까지 반영이 안되었고, 추가되는 버전에 대해서도 반영해야한다고 help 이슈에 한번에 올려줘 — i.e., the section must (a) catch up to v1.14.1 and (b) have a process so future versions stay in sync.


Affected files (target scope)

All 15 files under plugins/preview-forge/commands/. Korean-line counts measured by Unicode Hangul block \x{AC00}-\x{D7AF}:

File Korean lines Total % Visibility
commands/help.md 16 40 40% Highest — every user invokes /pf:help to discover commands
commands/new.md 81 140 57% Highest — primary entry point /pf:new
commands/preview.md 18 45 40% High — H2 → preview server (PR #104)
commands/status.md 18 47 38% High — frequent during runs
commands/design.md 25 79 31% High — Gate H1
commands/export.md 8 26 30% Medium
commands/gallery.md 8 26 30% Medium
commands/lessons.md 8 26 30% Medium
commands/panel.md 8 26 30% Medium
commands/replay.md 8 26 30% Medium
commands/retry.md 8 26 30% Medium
commands/seed.md 8 26 30% Medium
commands/budget.md 16 56 28% Medium
commands/freeze.md 8 30 26% High — Gate H2
commands/bootstrap.md 33 151 21% High — first-run command

Total: 281 Korean lines across 15 files / 791 total lines.


Headline failure — /pf:help (attached screenshot)

The user-visible help table renders the following Korean strings:

Pro/Max 기본 포함. 별도 API 키 불필요.
14 Commands                                      ← stale, should be 15
/pf:bootstrap   Plugin memory + workspace permission 초기화 (G1/G2 게이트만 묻도록)
/pf:new         새 Preview Forge run 시작 (PreviewDD cycle 진입)
/pf:status      현재 run 상태, agent 진행, Blackboard, active profile
/pf:design      Gate H1 — Preview 선택 + Design tweak (통합 AskUserQuestion)
/pf:panel       4-Panel decision vote 수동 트리거
/pf:freeze      Judges + Auditors 강제 평가 + freeze 시도
/pf:preview     Frozen run의 local preview server 실행
/pf:gallery     과거 run 탐색, preview grid, fork
/pf:retry       실패한 agent / stuck phase 재실행
/pf:replay      trace.jsonl 기반 deterministic replay
/pf:export      Frozen run을 tarball/Claude Code plugin으로 패키징
/pf:budget      비용 대시보드 (per-run / per-cycle / per-agent, profile baseline 비교)
/pf:lessons     Cross-run failure catalog (LESSONS.md) view/edit
/pf:seed        Pre-verified demo idea bank 탐색

What's new (v1.6 / v1.7 audit umbrellas → semver v1.10.0)   ← stale; we are at v1.14.1
- v1.6 — I1 Socratic interview: /pf:new 직후 AskUserQuestion 3-batch로 idea.spec.json 작성 → 26 advocates가 ground truth로 dispatch (LESSON 0.7 해소)
- v1.7 B-1 — 필수 4개 (persona / platform / killer_feature / constraint), 나머지 optional → 4클릭으로 gallery 도달
- v1.7 B-3 — Batch A 첫 모달에 "Skip interview — use defaults" 한 클릭 abort
- v1.7 A-4 — _filled_ratio 4-tier fallback (≥0.7 high / 0.4-0.7 mid / 0.2-0.4 low / <0.2 fallback), hard gate 없음
- v1.6.1 A-1 — Weak-replay: 동일 idea+profile 재실행 시 cache hit으로 인터뷰 스킵 옵션

상세: schemas/idea-spec.schema.json, agents/ideation/ideation-lead.md §1, CHANGELOG.md
Start with /pf:bootstrap (최초 1회) → /pf:new (run 시작).

Source: plugins/preview-forge/commands/help.md (40 lines, 16 Korean).


Stale "What's new" section — version backlog (v1.10.1 → v1.14.1)

commands/help.md line 23 currently reads:

## What's new (audit umbrellas v1.6 / v1.7 — shipped through semver v1.10.0)

The file was last refreshed at semver v1.10.0. Four minor + one patch releases have shipped since with material user-visible features that the help text never narrates. Backfill required:

Semver Date Material change for /pf:help What's new
v1.11.0 2026-04-25 Phase 8 closure of audit umbrella — Q-9 (per-seed expected-socratic.json), Q-1 / Q-2 verifications. Plus LESSON 0.7 panel-bias regression fixture (#72 #78).
v1.11.1 2026-04-25 factory-policy.py SHELL_BYPASSES coverage broadened to all 10 BLOCKED_BASH patterns; CI regex weakening probes (#64 / #69). Hygiene: verify-plugin schema count + idea_summary 5000-char cap + macOS duplicate file gitignore (#63 / #65 / #68).
v1.12.0 2026-04-25 A-4 _filled_ratio gate + A-5 H1 modal helper code-enforcement (#59). A-6 framework-lint + C-5 spec-anchor audit (#59 / #62). Advocate boilerplate re-sync + lint guard (#61).
v1.12.1 2026-04-25 Defense-in-depth on input + cache read-path size cap (#83 follow-up). Broader eval regex + fake-shim for positive URL loop (#85 follow-up).
v1.13.0 2026-04-25 H1 → SpecDD auto-advance (PR #103) — sentinel hook + dispatch script + M3 imperatives. H2 → preview server auto-launch + /pf:preview slash command (PR #104) — localhost:18080 opens automatically after H2 freeze.
v1.14.0 2026-04-26 Rule 10 — Output language English added to Layer-0 methodology (#107).
v1.14.1 2026-04-26 Default-profile correctness fix — actual default is standard, removed stale pro references (#110).

Each row above must end up as a one-line bullet under ## What's new in help.md after this issue is closed.


Process gap — "What's new" must stay current going forward

The drift from v1.10.0 to v1.14.1 happened because there is no rule that ties commands/help.md's What's new section to the release cycle. CHANGELOG.md is auto-generated by release-please from Conventional Commits; help.md is not. Closing this issue without a maintenance process means the same drift will recur.

Recommended policy (to add to CONTRIBUTING.md "Release process" or a new docs/RELEASING.md):

When a PR introduces a user-visible change (anything affecting /pf:* command behavior, idea.spec.json schema, profile defaults, gate semantics, or new slash commands), it MUST also append a one-line bullet to ## What's new in plugins/preview-forge/commands/help.md under the corresponding semver heading. The bullet must reference the PR number and the user-visible behavior, not the internal refactor. release-please's auto-generated CHANGELOG is the source of truth for the per-tag mapping; help.md's What's new is the user-narrative subset.

Optional CI enforcement (out of scope for this issue, file as follow-up): a workflow that diffs CHANGELOG.md against the What's new section of help.md on every release-please PR and fails if a feat/fix entry in CHANGELOG has no matching bullet in help.md.


Stale facts inside /pf:help (compounding the language issue)

Even after translation, help.md carries factual drift identical to the issues tracked in #109:

Drift Current Should be Citation
Command count "14 명령어" 14 15 PR #104 added /pf:preview; verify-plugin.sh:80 will need bump to -eq 15
"shipped through semver v1.10.0" v1.10.0 v1.14.1 (current latest) git tag --list
"audit umbrellas v1.6 / v1.7" framing latest mention is v1.6.1 / v1.7 Should also reference v1.13.0 H1/H2 auto-advance + v1.14.0 Rule 10 + v1.14.1 default-profile fix n/a

This issue's scope: translate Korean → English AND fix the stale facts in the same edit AND backfill What's new to v1.14.1 AND establish the maintenance policy.


Root cause

Identical to #102 / #112: a stale agent-memory rule defaulted natural prose to Korean. The slash command files were authored before the policy and not retroactively translated. The CONTRIBUTING.md "Language" section (PR #106) creates the policy but did not enforce a sweep.

For the What's new drift specifically: the file is hand-maintained, has no CI link to release-please, and was not part of any PR's checklist between v1.10.1 and v1.14.1.

There is no automated lint that fails CI on Hangul characters in commands/*.md. Once this issue ships, a guardrail is recommended.


Why this is high priority

  • /pf:help is the discoverability surface. A user who installs the plugin and types /pf:help to learn the commands is immediately greeted with Korean. International hackathon judges who do this see a non-English help system as their first interactive impression.
  • /pf:new is the primary entry point. Its prompt body (140 lines, 57% Korean) shapes how Claude renders all run-start interactions. Korean instructions in the prompt template propagate Korean output downstream into idea.spec.json rationales, advocate dispatches, and run logs — even when the user themselves writes English.
  • The frozen What's new actively misleads users. A judge running /pf:help after install today is told the latest release is v1.10.0 with v1.6 / v1.7 features, not v1.14.1 with H1/H2 auto-advance and Rule 10 — i.e., they are unaware of the demo-critical workflow auto-advance feature shipped in PR feat(workflow): H1->SpecDD auto-advance — sentinel hook + dispatch script + M3 imperatives (Phase 1) #103/feat(workflow): H2→preview server auto-launch + /pf:preview slash command (Phase 2) #104.
  • Hackathon submission deadline: 2026-04-26 20:00 EST. This is a today-or-never fix for the demo cycle.

Proposed scope split

To keep PRs reviewable, split into two clusters that follow the #102 cleanup pattern:

Cluster H — High-visibility commands (the demo path)

  • commands/help.md — translate + bump 14→15 + backfill What's new from v1.10.0 to v1.14.1 (7 new bullets per the table above) + add the maintenance-policy reference
  • commands/new.md — translate (largest at 81 Korean lines)
  • commands/bootstrap.md — translate (first-run command)
  • commands/design.md — translate (Gate H1)
  • commands/freeze.md — translate (Gate H2)
  • commands/preview.md — translate (H2 auto-launch, PR feat(workflow): H2→preview server auto-launch + /pf:preview slash command (Phase 2) #104)
  • commands/status.md — translate

Cluster M — Medium-visibility commands

  • commands/budget.md
  • commands/export.md
  • commands/gallery.md
  • commands/lessons.md
  • commands/panel.md
  • commands/replay.md
  • commands/retry.md
  • commands/seed.md

If Sangguen's #102 plan (manual for high-stakes / agent-dispatch for mechanical) is reused: Cluster H = manual, Cluster M = agent-dispatch. Total ≈ 791 lines, ~281 Korean lines.


Recommended guardrail (optional follow-up)

Add a CI lint that fails on any Hangul character (\x{AC00}-\x{D7AF}) inside plugins/preview-forge/commands/**/*.md. Suggested implementation:

# scripts/check-no-hangul.sh
set -e
hits=$(grep -rlP '[\x{AC00}-\x{D7AF}]' plugins/preview-forge/commands/ || true)
if [ -n "$hits" ]; then
  echo "✗ Hangul characters found in command bodies (English-only policy violation):"
  echo "$hits"
  exit 1
fi
echo "✓ commands/*.md is English-only"

Wire into .github/workflows/ci.yml after the existing language-policy hooks.

This guardrail is out of scope for this issue — file as separate follow-up if desired. The point of mentioning it here is to prevent regression after manual translation.


Side-effect / breaking-change assessment

Concern Status
Slash command behavior None — translating Markdown prose does not alter the command's executable behavior.
verify-plugin.sh Currently passes with Korean. Will continue to pass after edit unless the optional Hangul-lint guardrail is also added. Counts assertion at :80 (-eq 14) needs separate bump to 15 for /pf:preview (already noted in #109).
Existing user installs Description body is pulled fresh on /plugin marketplace update + /plugin update. No client-side cache invalidation needed.
Agent prompt behavior Korean instructions in commands/new.md may have biased downstream agents toward Korean reasoning chains (e.g., advocate dispatches, run logs). Translating to English should improve English-language run consistency, not degrade it. Worth verifying via a 3-profile e2e (`tests/e2e/mock-bootstrap.sh standard
Translation memory loss None — Korean strings remain in git history (git blame, git log -p commands/*.md).
Version bump Edit qualifies as docs: per CONTRIBUTING.md commit-prefix convention (#71). Will not trigger release-please semver bump under default rules.

Acceptance criteria

  • All 15 commands/*.md files contain zero Hangul characters (verified by grep -rP '[\x{AC00}-\x{D7AF}]' plugins/preview-forge/commands/ → no output)
  • commands/help.md reflects current counts: 15 commands, latest semver v1.14.1
  • commands/help.md ## What's new section includes per-version bullets for all of: v1.11.0, v1.11.1, v1.12.0, v1.12.1, v1.13.0, v1.14.0, v1.14.1 (the 7 rows in the backfill table above), each linking the relevant PR number
  • CONTRIBUTING.md (or docs/RELEASING.md) carries the maintenance policy: "any user-visible feat/fix PR must also append a What's new bullet in commands/help.md under the matching semver heading"
  • All command-body translations follow Sangguen's principles from docs: enforce English-only language policy + retroactive cleanup of Korean issue bodies (#58–#80) #102 (literal translation, no paraphrase, file paths / variable names / version markers preserved verbatim)
  • Cross-references to schemas/, agents/, CHANGELOG.md preserved exactly
  • bash scripts/verify-plugin.sh passes
  • bash tests/e2e/mock-bootstrap.sh standard passes (regression check that translated commands/new.md doesn't break the run pipeline)
  • Optional: Hangul-lint guardrail wired into .github/workflows/ci.yml
  • Optional: CI lint that diffs CHANGELOG.md against commands/help.md What's new and fails when feat/fix entries are missing from help.md

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions