okstra 0.102.1 → 0.102.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.kr.md +5 -6
- package/README.md +5 -6
- package/docs/kr/architecture/storage-model.md +1 -1
- package/docs/kr/architecture.md +8 -12
- package/docs/kr/cli.md +6 -6
- package/docs/kr/container.md +1 -1
- package/docs/kr/performance-improvement-plan-v2.md +2 -2
- package/docs/project-structure-overview.md +2 -2
- package/package.json +7 -2
- package/runtime/BUILD.json +2 -2
- package/runtime/bin/okstra-antigravity-exec.sh +1 -2
- package/runtime/bin/okstra-codex-exec.sh +1 -2
- package/runtime/bin/okstra-render-final-report.py +2 -9
- package/runtime/bin/okstra-spawn-followups.py +4 -6
- package/runtime/bin/okstra-trace-cleanup.sh +24 -4
- package/runtime/prompts/lead/okstra-lead-contract.md +2 -2
- package/runtime/prompts/lead/report-writer.md +1 -1
- package/runtime/prompts/profiles/_common-contract.md +9 -11
- package/runtime/python/okstra_ctl/codex_dispatch.py +4 -12
- package/runtime/python/okstra_ctl/consumers.py +35 -0
- package/runtime/python/okstra_ctl/container.py +4 -6
- package/runtime/python/okstra_ctl/dispatch_core.py +4 -12
- package/runtime/python/okstra_ctl/final_report_paths.py +24 -0
- package/runtime/python/okstra_ctl/handoff.py +2 -1
- package/runtime/python/okstra_ctl/implementation_stage.py +7 -11
- package/runtime/python/okstra_ctl/report_view_artifacts.py +14 -0
- package/runtime/python/okstra_ctl/report_views.py +7 -4
- package/runtime/python/okstra_ctl/run.py +3 -10
- package/runtime/python/okstra_ctl/stage_targets.py +18 -0
- package/runtime/python/okstra_ctl/wizard.py +24 -25
- package/runtime/python/okstra_ctl/wizard_stage_intent.py +54 -0
- package/runtime/python/okstra_token_usage/report.py +2 -5
- package/runtime/validators/validate-report-views.py +2 -1
- package/runtime/validators/validate-run.py +1 -11
- package/src/cli-registry.mjs +1 -1
- package/src/commands/lifecycle/install.mjs +10 -20
- package/src/commands/lifecycle/uninstall.mjs +7 -10
- package/docs/superpowers/plans/2026-05-12-ticket-id-in-reports.md +0 -638
- package/docs/superpowers/plans/2026-05-14-convergence-queue-pruning.md +0 -1568
- package/docs/superpowers/plans/2026-05-17-dual-format-final-report.md +0 -167
- package/docs/superpowers/plans/2026-05-20-final-report-language.md +0 -1501
- package/docs/superpowers/plans/2026-05-20-implementation-planning-multi-stage.md +0 -1267
- package/docs/superpowers/plans/2026-05-20-okstra-run-prompt-sot-b1.md +0 -1007
- package/docs/superpowers/plans/2026-05-20-wizard-messages-json-sot.md +0 -720
- package/docs/superpowers/plans/2026-05-20-wizard-prompt-json-sot-a1.md +0 -681
- package/docs/superpowers/plans/2026-05-21-improvement-discovery-task-type.md +0 -1691
- package/docs/superpowers/plans/2026-05-24-implementation-lead-context-slimming.md +0 -1700
- package/docs/superpowers/plans/2026-05-25-okstra-project-root-rename.md +0 -158
- package/docs/superpowers/plans/2026-05-26-wizard-3-option-picker.md +0 -860
- package/docs/superpowers/plans/2026-06-02-final-verification-protocol-hardening.md +0 -326
- package/docs/superpowers/plans/2026-06-02-okstra-run-branch-confirm-step.md +0 -337
- package/docs/superpowers/plans/2026-06-02-okstra-run-phase-pane-cleanup.md +0 -410
- package/docs/superpowers/plans/2026-06-02-requirements-discovery-fanout.md +0 -728
- package/docs/superpowers/plans/2026-06-04-adversarial-implementation-planning.md +0 -294
- package/docs/superpowers/plans/2026-06-04-adversarial-verification.md +0 -570
- package/docs/superpowers/plans/2026-06-04-coverage-critic.md +0 -516
- package/docs/superpowers/plans/2026-06-04-stage-cohesion-planner.md +0 -351
- package/docs/superpowers/plans/2026-06-04-stage-run-batching.md +0 -457
- package/docs/superpowers/plans/2026-06-05-acceptance-critic.md +0 -251
- package/docs/superpowers/plans/2026-06-05-compact-markdown-report-tables.md +0 -323
- package/docs/superpowers/plans/2026-06-05-wizard-batch-prompts.md +0 -559
- package/docs/superpowers/plans/2026-06-06-final-verification-whole-task-gate.md +0 -993
- package/docs/superpowers/plans/2026-06-06-stage-parallel-and-pending-fixes.md +0 -93
- package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p1.md +0 -447
- package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p2.md +0 -289
- package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p3.md +0 -774
- package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p4.md +0 -303
- package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p5-multidep-base.md +0 -387
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase2.md +0 -275
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase3.md +0 -282
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4a.md +0 -147
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4b.md +0 -262
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4c.md +0 -184
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4d.md +0 -88
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4e.md +0 -250
- package/docs/superpowers/plans/2026-06-07-stage-conformance-qa.md +0 -409
- package/docs/superpowers/plans/2026-06-09-implementation-run-artifact-stage-isolation.md +0 -320
- package/docs/superpowers/plans/2026-06-10-concurrent-run-team-guard.md +0 -456
- package/docs/superpowers/plans/2026-06-10-git-reconcile-stale-sha-recovery.md +0 -1408
- package/docs/superpowers/plans/2026-06-10-lead-worker-completion-polling-PROBE.md +0 -42
- package/docs/superpowers/plans/2026-06-10-lead-worker-completion-polling.md +0 -337
- package/docs/superpowers/plans/2026-06-10-p6-token-usage-incremental.md +0 -1029
- package/docs/superpowers/plans/2026-06-10-stage-group-handoff.md +0 -1572
- package/docs/superpowers/plans/2026-06-11-fix-cycle.md +0 -1290
- package/docs/superpowers/plans/2026-06-11-wizard-whole-task-final-verification.md +0 -526
- package/docs/superpowers/plans/2026-06-12-html-plan-approval.md +0 -1000
- package/docs/superpowers/plans/2026-06-13-repo-risk-hardening.md +0 -493
- package/docs/superpowers/plans/2026-06-14-host-runtime-auto-execution.md +0 -1775
- package/docs/superpowers/plans/2026-06-15-coding-preflight-pack-dispatch-path.md +0 -504
- package/docs/superpowers/plans/2026-06-15-internal-skill-migration-final-fixups.md +0 -342
- package/docs/superpowers/plans/2026-06-15-internal-skill-migration-fixups.md +0 -258
- package/docs/superpowers/plans/2026-06-15-internal-skill-migration-remaining-fixups.md +0 -387
- package/docs/superpowers/plans/2026-06-15-internal-skill-resource-migration.md +0 -749
- package/docs/superpowers/plans/2026-06-15-worker-prompt-anchor-final-fixups.md +0 -828
- package/docs/superpowers/plans/2026-06-15-worker-prompt-header-error-contract.md +0 -490
- package/docs/superpowers/plans/2026-06-17-okstra-error-report.md +0 -724
- package/docs/superpowers/plans/2026-06-18-subagent-pane-reclaim.md +0 -483
- package/docs/superpowers/plans/2026-06-19-agent-operating-standard.md +0 -476
- package/docs/superpowers/plans/2026-06-19-okstra-inspect-recap-facet.md +0 -647
- package/docs/superpowers/plans/2026-06-20-error-feedback-loop.md +0 -1019
- package/docs/superpowers/plans/2026-06-20-run-index-row-normalization.md +0 -583
- package/docs/superpowers/plans/2026-06-20-stage-auto-integrate-teardown.md +0 -819
- package/docs/superpowers/plans/2026-06-21-okstra-container-local-user-test.md +0 -714
- package/docs/superpowers/plans/2026-06-21-release-handoff-local-checkout.md +0 -348
- package/docs/superpowers/plans/2026-06-23-implementation-stage-multiselect-chain.md +0 -630
- package/docs/superpowers/plans/2026-06-23-implementation-step-commit-granularity.md +0 -274
- package/docs/superpowers/plans/2026-06-23-phase-batch-cleanup-enforcement.md +0 -409
- package/docs/superpowers/plans/2026-06-24-cross-project-precondition.md +0 -542
- package/docs/superpowers/plans/2026-06-24-decision-drafts-render-gap.md +0 -568
- package/docs/superpowers/plans/2026-06-24-manual-user-test-section.md +0 -203
- package/docs/superpowers/plans/2026-06-24-okstra-container-build-rename.md +0 -525
- package/docs/superpowers/specs/2026-05-12-ticket-id-in-reports-design.md +0 -131
- package/docs/superpowers/specs/2026-05-15-implementation-plan-verification-design.md +0 -254
- package/docs/superpowers/specs/2026-05-20-final-report-language-design.md +0 -383
- package/docs/superpowers/specs/2026-05-20-implementation-planning-multi-stage-design.md +0 -322
- package/docs/superpowers/specs/2026-05-20-okstra-run-prompt-sot-design.md +0 -299
- package/docs/superpowers/specs/2026-05-21-improvement-discovery-task-type-design.md +0 -335
- package/docs/superpowers/specs/2026-06-02-okstra-run-branch-confirm-step-design.md +0 -113
- package/docs/superpowers/specs/2026-06-02-okstra-run-phase-pane-cleanup-design.md +0 -173
- package/docs/superpowers/specs/2026-06-02-requirements-discovery-fanout-design.md +0 -154
- package/docs/superpowers/specs/2026-06-04-adversarial-implementation-planning-design.md +0 -90
- package/docs/superpowers/specs/2026-06-04-adversarial-verification-design.md +0 -176
- package/docs/superpowers/specs/2026-06-04-coverage-critic-design.md +0 -99
- package/docs/superpowers/specs/2026-06-04-stage-splitting-cost-aware-design.md +0 -98
- package/docs/superpowers/specs/2026-06-05-acceptance-critic-design.md +0 -90
- package/docs/superpowers/specs/2026-06-05-compact-markdown-report-tables-design.md +0 -87
- package/docs/superpowers/specs/2026-06-05-wizard-batch-prompts-design.md +0 -121
- package/docs/superpowers/specs/2026-06-06-final-verification-whole-task-gate-design.md +0 -126
- package/docs/superpowers/specs/2026-06-06-stage-worktree-isolation-design.md +0 -180
- package/docs/superpowers/specs/2026-06-06-vertical-slice-tdd-planning-design.md +0 -179
- package/docs/superpowers/specs/2026-06-07-stage-conformance-qa-design.md +0 -169
- package/docs/superpowers/specs/2026-06-09-executor-model-custom-id-cascade-design.md +0 -66
- package/docs/superpowers/specs/2026-06-09-implementation-run-artifact-stage-isolation-design.md +0 -87
- package/docs/superpowers/specs/2026-06-10-blocking-contract-posthoc-conformance-design.md +0 -168
- package/docs/superpowers/specs/2026-06-10-concurrent-run-team-guard-design.md +0 -107
- package/docs/superpowers/specs/2026-06-10-git-reconcile-stale-sha-recovery-design.md +0 -105
- package/docs/superpowers/specs/2026-06-10-lead-worker-completion-polling-design.md +0 -113
- package/docs/superpowers/specs/2026-06-10-stage-group-handoff-design.md +0 -156
- package/docs/superpowers/specs/2026-06-11-brief-entry-only-handoff-stage-entry-design.md +0 -158
- package/docs/superpowers/specs/2026-06-11-fix-cycle-design.md +0 -94
- package/docs/superpowers/specs/2026-06-11-wizard-whole-task-final-verification-design.md +0 -89
- package/docs/superpowers/specs/2026-06-12-codex-lead-adapter-design.md +0 -358
- package/docs/superpowers/specs/2026-06-12-html-plan-approval-design.md +0 -85
- package/docs/superpowers/specs/2026-06-12-stage-discipline-rule-design.md +0 -108
- package/docs/superpowers/specs/2026-06-13-forbidden-actions-ssot-design.md +0 -134
- package/docs/superpowers/specs/2026-06-13-neutral-tmux-lead-adapter-design.md +0 -284
- package/docs/superpowers/specs/2026-06-14-host-runtime-auto-execution-design.md +0 -404
- package/docs/superpowers/specs/2026-06-17-okstra-error-report-design.md +0 -123
- package/docs/superpowers/specs/2026-06-18-subagent-pane-reclaim-design.md +0 -150
- package/docs/superpowers/specs/2026-06-19-agent-operating-standard-design.md +0 -120
- package/docs/superpowers/specs/2026-06-19-okstra-inspect-recap-facet-design.md +0 -96
- package/docs/superpowers/specs/2026-06-20-error-feedback-loop-design.md +0 -171
- package/docs/superpowers/specs/2026-06-20-run-index-row-normalization-design.md +0 -112
- package/docs/superpowers/specs/2026-06-20-stage-auto-integrate-teardown-design.md +0 -145
- package/docs/superpowers/specs/2026-06-21-okstra-container-local-user-test-design.md +0 -125
- package/docs/superpowers/specs/2026-06-21-release-handoff-local-checkout-design.md +0 -113
- package/docs/superpowers/specs/2026-06-23-implementation-stage-multiselect-chain-design.md +0 -138
- package/docs/superpowers/specs/2026-06-23-implementation-step-commit-granularity-design.md +0 -120
- package/docs/superpowers/specs/2026-06-24-cross-project-precondition-design.md +0 -129
- package/docs/superpowers/specs/2026-06-24-decision-drafts-render-gap-design.md +0 -185
- package/docs/superpowers/specs/2026-06-24-manual-user-test-section-design.md +0 -121
- package/docs/superpowers/specs/2026-06-24-okstra-container-build-rename-design.md +0 -110
|
@@ -13,11 +13,9 @@ const SKILLS_MANIFEST_REL = "installed-skills.json";
|
|
|
13
13
|
const AGENTS_MANIFEST_REL = "installed-agents.json";
|
|
14
14
|
const USER_HOME = homedir();
|
|
15
15
|
const CLAUDE_HOME = join(USER_HOME, ".claude");
|
|
16
|
-
const
|
|
17
|
-
const OMP_AGENT_HOME = join(USER_HOME, ".omp", "agent");
|
|
16
|
+
const AGENTS_HOME = join(USER_HOME, ".agents");
|
|
18
17
|
const CLAUDE_SKILLS_DIR = join(CLAUDE_HOME, "skills");
|
|
19
|
-
const
|
|
20
|
-
const OMP_SKILLS_DIR = join(OMP_AGENT_HOME, "skills");
|
|
18
|
+
const AGENTS_SKILLS_DIR = join(AGENTS_HOME, "skills");
|
|
21
19
|
const CLAUDE_AGENTS_DIR = join(CLAUDE_HOME, "agents");
|
|
22
20
|
|
|
23
21
|
// Source template (relative to runtime root in copy mode, or repo root in link mode).
|
|
@@ -82,8 +80,7 @@ Effect (copy mode):
|
|
|
82
80
|
${"$HOME"}/.okstra/prompts <- runtime/prompts (lead contracts + coding-preflight pack)
|
|
83
81
|
${"$HOME"}/.okstra/templates/settings.local.json <- runtime/templates/reports/settings.template.json
|
|
84
82
|
${"$HOME"}/.claude/skills/<name> <- skills when ${"$HOME"}/.claude exists
|
|
85
|
-
${"$HOME"}/.
|
|
86
|
-
${"$HOME"}/.omp/agent/skills/<name> <- skills fallback when Claude/Agent homes are absent
|
|
83
|
+
${"$HOME"}/.agents/skills/<name> <- skills (created when needed)
|
|
87
84
|
${"$HOME"}/.claude/agents/<worker>.md <- worker agents when ${"$HOME"}/.claude exists
|
|
88
85
|
${"$HOME"}/.okstra/installed-runtimes.json <- install request/resolution manifest
|
|
89
86
|
${"$HOME"}/.okstra/installed-skills.json <- target-aware manifest of installed skills
|
|
@@ -96,8 +93,7 @@ Effect (link mode):
|
|
|
96
93
|
${"$HOME"}/.okstra/prompts -> <repo>/prompts
|
|
97
94
|
${"$HOME"}/.okstra/templates/settings.local.json -> <repo>/templates/reports/settings.template.json
|
|
98
95
|
${"$HOME"}/.claude/skills/<name> -> <repo>/skills/<name> when ${"$HOME"}/.claude exists
|
|
99
|
-
${"$HOME"}/.
|
|
100
|
-
${"$HOME"}/.omp/agent/skills/<name> -> <repo>/skills/<name> fallback
|
|
96
|
+
${"$HOME"}/.agents/skills/<name> -> <repo>/skills/<name> (created when needed)
|
|
101
97
|
${"$HOME"}/.claude/agents/<worker>.md -> <repo>/agents/workers/<worker>.md when ${"$HOME"}/.claude exists
|
|
102
98
|
${"$HOME"}/.okstra/dev-link <- <repo> path stamp
|
|
103
99
|
${"$HOME"}/.okstra/version <- installed package version stamp
|
|
@@ -109,10 +105,10 @@ worker wrapper scripts without modifying the user's global settings.
|
|
|
109
105
|
|
|
110
106
|
Worker agent definitions are installed into ${"$HOME"}/.claude/agents/ only
|
|
111
107
|
when ${"$HOME"}/.claude exists, so Claude Code's subagent discovery can pick
|
|
112
|
-
them up.
|
|
108
|
+
them up. Agent skill targets receive skill markdown only.
|
|
113
109
|
|
|
114
110
|
Default auto runtime installation does not require host detection; it still
|
|
115
|
-
installs shared runtime files and any
|
|
111
|
+
installs shared runtime files, the Agent skill target, and any Claude home it finds.
|
|
116
112
|
`;
|
|
117
113
|
|
|
118
114
|
const ENSURE_USAGE = `okstra ensure-installed — idempotent install check
|
|
@@ -401,16 +397,11 @@ async function installLinkMode(repoPath, paths, opts) {
|
|
|
401
397
|
|
|
402
398
|
async function detectSkillTargets() {
|
|
403
399
|
const targets = [];
|
|
404
|
-
const
|
|
400
|
+
const hasClaude = await dirExists(CLAUDE_HOME);
|
|
405
401
|
if (hasClaude) {
|
|
406
402
|
targets.push({ provider: "claude", home: CLAUDE_HOME, skillsDir: CLAUDE_SKILLS_DIR });
|
|
407
403
|
}
|
|
408
|
-
|
|
409
|
-
targets.push({ provider: "agent", home: AGENT_HOME, skillsDir: AGENT_SKILLS_DIR });
|
|
410
|
-
}
|
|
411
|
-
if (targets.length === 0 && (await dirExists(OMP_AGENT_HOME))) {
|
|
412
|
-
targets.push({ provider: "omp", home: OMP_AGENT_HOME, skillsDir: OMP_SKILLS_DIR });
|
|
413
|
-
}
|
|
404
|
+
targets.push({ provider: "agent", home: AGENTS_HOME, skillsDir: AGENTS_SKILLS_DIR });
|
|
414
405
|
return targets;
|
|
415
406
|
}
|
|
416
407
|
|
|
@@ -428,7 +419,6 @@ function installedAssetOverrides(skillTargets, agentNames) {
|
|
|
428
419
|
claudeSkills: providers.has("claude"),
|
|
429
420
|
claudeAgents: agentNames.length > 0,
|
|
430
421
|
codexSkills: providers.has("codex"),
|
|
431
|
-
ompSkills: providers.has("omp"),
|
|
432
422
|
skillTargets: Array.from(providers).sort(),
|
|
433
423
|
};
|
|
434
424
|
}
|
|
@@ -682,7 +672,7 @@ async function pruneObsoleteSkills(target, opts) {
|
|
|
682
672
|
|
|
683
673
|
async function installSkillTargetsCopy(runtimeRoot, targets, opts) {
|
|
684
674
|
if (targets.length === 0) {
|
|
685
|
-
if (!opts.quiet) process.stdout.write(" skills: no
|
|
675
|
+
if (!opts.quiet) process.stdout.write(" skills: no skill target found — skipped\n");
|
|
686
676
|
return [];
|
|
687
677
|
}
|
|
688
678
|
return await Promise.all(targets.map((target) => installSkillsCopy(runtimeRoot, target, opts)));
|
|
@@ -690,7 +680,7 @@ async function installSkillTargetsCopy(runtimeRoot, targets, opts) {
|
|
|
690
680
|
|
|
691
681
|
async function installSkillTargetsLink(repoAbs, targets, opts) {
|
|
692
682
|
if (targets.length === 0) {
|
|
693
|
-
if (!opts.quiet) process.stdout.write(" skills: no
|
|
683
|
+
if (!opts.quiet) process.stdout.write(" skills: no skill target found — skipped\n");
|
|
694
684
|
return [];
|
|
695
685
|
}
|
|
696
686
|
return await Promise.all(targets.map((target) => installSkillsLink(repoAbs, target, opts)));
|
|
@@ -40,16 +40,13 @@ const FALLBACK_AGENT_NAMES = [
|
|
|
40
40
|
|
|
41
41
|
const USER_HOME = homedir();
|
|
42
42
|
const CLAUDE_HOME = join(USER_HOME, ".claude");
|
|
43
|
-
const
|
|
44
|
-
const OMP_AGENT_HOME = join(USER_HOME, ".omp", "agent");
|
|
43
|
+
const AGENTS_HOME = join(USER_HOME, ".agents");
|
|
45
44
|
const CLAUDE_SKILLS_DIR = join(CLAUDE_HOME, "skills");
|
|
46
|
-
const
|
|
47
|
-
const OMP_SKILLS_DIR = join(OMP_AGENT_HOME, "skills");
|
|
45
|
+
const AGENTS_SKILLS_DIR = join(AGENTS_HOME, "skills");
|
|
48
46
|
const CLAUDE_AGENTS_DIR = join(CLAUDE_HOME, "agents");
|
|
49
47
|
const FALLBACK_SKILL_ROOTS = [
|
|
50
48
|
CLAUDE_SKILLS_DIR,
|
|
51
|
-
|
|
52
|
-
OMP_SKILLS_DIR,
|
|
49
|
+
AGENTS_SKILLS_DIR,
|
|
53
50
|
];
|
|
54
51
|
const SKILLS_MANIFEST_REL = "installed-skills.json";
|
|
55
52
|
const AGENTS_MANIFEST_REL = "installed-agents.json";
|
|
@@ -63,8 +60,8 @@ Usage:
|
|
|
63
60
|
installed-skills.json, installed-agents.json} AND
|
|
64
61
|
every skill target recorded in
|
|
65
62
|
installed-skills.json
|
|
66
|
-
(~/.claude/skills
|
|
67
|
-
|
|
63
|
+
(~/.claude/skills or ~/.agents/skills).
|
|
64
|
+
Claude worker agents are
|
|
68
65
|
removed from ~/.claude/agents when installed.
|
|
69
66
|
Missing manifests fall back to hard-coded
|
|
70
67
|
Claude okstra-* / *-worker.md names.
|
|
@@ -75,7 +72,7 @@ Usage:
|
|
|
75
72
|
(<PROJECT>/.claude/settings.local.json symlink)
|
|
76
73
|
are NOT touched — remove them manually if needed.
|
|
77
74
|
okstra uninstall --purge Remove the entire ~/.okstra directory AND
|
|
78
|
-
okstra skills in Claude/Agent
|
|
75
|
+
okstra skills in Claude/Agent homes AND
|
|
79
76
|
~/.claude/agents/<*-worker.md> (DESTRUCTIVE).
|
|
80
77
|
Requires -y or an interactive confirmation
|
|
81
78
|
okstra uninstall --dry-run Print the plan without touching disk
|
|
@@ -139,7 +136,7 @@ export async function runUninstall(args) {
|
|
|
139
136
|
if (opts.purge) {
|
|
140
137
|
if (!opts.yes && !opts.dryRun) {
|
|
141
138
|
const ok = await promptConfirm(
|
|
142
|
-
`purge entire ${paths.home} AND okstra skills in Claude/Agent
|
|
139
|
+
`purge entire ${paths.home} AND okstra skills in Claude/Agent homes? user data will be lost.`,
|
|
143
140
|
);
|
|
144
141
|
if (!ok) {
|
|
145
142
|
process.stdout.write("aborted.\n");
|