File size: 3,314 Bytes
a6b96c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
"use strict";
/**
 * Skill cluster definitions for the runtime surface module (ADR-457
 * build-at-publish: the hand-written bin/lib/clusters.cjs collapsed to a
 * TypeScript source of truth). Behaviour is preserved byte-for-behaviour from
 * the prior hand-written .cjs; only types are added.
 *
 * Each cluster is a named group of skill stems. Clusters are used by /gsd:surface
 * to enable/disable a cohesive group of skills without reinstall.
 *
 * Cluster membership may overlap (a skill can live in two clusters). The union
 * of all clusters should cover every installed skill stem; uncategorized stems
 * are flagged by surface-clusters.test.cjs.
 *
 * Source: docs/research/2026-05-12-skill-surface-budget.md §3.2 (verified
 * against commands/gsd/ listing in surface-clusters.test.cjs).
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.CLUSTERS = void 0;
exports.allClusteredSkills = allClusteredSkills;
exports.CLUSTERS = Object.freeze({
    core_loop: Object.freeze([
        'new-project',
        'discuss-phase',
        'plan-phase',
        'execute-phase',
        'help',
        'update',
    ]),
    audit_review: Object.freeze([
        'code-review',
        'review',
        'audit-fix',
        'audit-milestone',
        'audit-uat',
        'verify-work',
        'validate-phase',
        'plan-review-convergence',
        'eval-review',
        'add-tests',
        'secure-phase',
    ]),
    milestone: Object.freeze([
        'new-milestone',
        'complete-milestone',
        'milestone-summary',
        'health',
    ]),
    research_ideate: Object.freeze([
        'sketch',
        'spike',
        'forensics',
        'explore',
        'graphify',
        'ns-ideate',
    ]),
    workspace_state: Object.freeze([
        'pause-work',
        'resume-work',
        'workspace',
        'workstreams',
        'thread',
        'capture',
        'inbox',
    ]),
    docs: Object.freeze([
        'docs-update',
        'ingest-docs',
    ]),
    ui: Object.freeze([
        'ui-phase',
        'ui-review',
    ]),
    ai_eval: Object.freeze([
        'ai-integration-phase',
        'eval-review',
    ]),
    ns_meta: Object.freeze([
        'ns-context',
        'ns-ideate',
        'ns-manage',
        'ns-project',
        'ns-review',
        'ns-workflow',
    ]),
    utility: Object.freeze([
        'health',
        'stats',
        'settings',
        'cleanup',
        'pr-branch',
        'ship',
        'undo',
        'fast',
        'quick',
        'autonomous',
        'config',
        'progress',
        'phase',
        'review',
        'update',
        'help',
        'code-review',
        'import',
        'manager',
        'map-codebase',
        'profile-user',
        'spec-phase',
        'ultraplan-phase',
        'mvp-phase',
        'execute-phase',
        'review-backlog',
        'debug',
        'extract-learnings',
        'mempalace-recall',
        'mempalace-capture',
        'surface',
    ]),
});
/**
 * Build a Set of all skill stems covered by at least one cluster.
 */
function allClusteredSkills() {
    const result = new Set();
    for (const skills of Object.values(exports.CLUSTERS)) {
        for (const s of skills)
            result.add(s);
    }
    return result;
}