@human-avatar/skills-for-humanity 1.0.0

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.
Files changed (152) hide show
  1. package/.claude-plugin/plugin.json +22 -0
  2. package/README.md +451 -0
  3. package/bin/install.js +271 -0
  4. package/package.json +41 -0
  5. package/skills/aesthetic/SKILL.md +80 -0
  6. package/skills/aesthetic-coherence-check/SKILL.md +92 -0
  7. package/skills/aesthetic-elegance-testing/SKILL.md +96 -0
  8. package/skills/aesthetic-pattern-detection/SKILL.md +93 -0
  9. package/skills/aesthetic-simplicity-analysis/SKILL.md +97 -0
  10. package/skills/analogy/SKILL.md +80 -0
  11. package/skills/analogy-boundary-testing/SKILL.md +90 -0
  12. package/skills/analogy-domain-transfer/SKILL.md +87 -0
  13. package/skills/analogy-perspective-shifting/SKILL.md +84 -0
  14. package/skills/analogy-structure-mapping/SKILL.md +88 -0
  15. package/skills/communication/SKILL.md +78 -0
  16. package/skills/communication-audience-modeling/SKILL.md +82 -0
  17. package/skills/communication-clarity-audit/SKILL.md +88 -0
  18. package/skills/communication-medium-selection/SKILL.md +89 -0
  19. package/skills/communication-objection-mapping/SKILL.md +87 -0
  20. package/skills/constraint/SKILL.md +78 -0
  21. package/skills/constraint-hardness-testing/SKILL.md +94 -0
  22. package/skills/constraint-rule-inversion/SKILL.md +77 -0
  23. package/skills/constraint-scope-reduction/SKILL.md +84 -0
  24. package/skills/constraint-workaround-mapping/SKILL.md +88 -0
  25. package/skills/creativity/SKILL.md +173 -0
  26. package/skills/creativity-alternatives/SKILL.md +84 -0
  27. package/skills/creativity-assumption-excavator/SKILL.md +95 -0
  28. package/skills/creativity-brainstorm/SKILL.md +102 -0
  29. package/skills/creativity-concept-fan/SKILL.md +93 -0
  30. package/skills/creativity-consider-factors/SKILL.md +87 -0
  31. package/skills/creativity-lateral-thinking/SKILL.md +77 -0
  32. package/skills/creativity-other-perspectives/SKILL.md +91 -0
  33. package/skills/creativity-plus-minus-interesting/SKILL.md +80 -0
  34. package/skills/creativity-provocation/SKILL.md +79 -0
  35. package/skills/creativity-random-entry/SKILL.md +74 -0
  36. package/skills/creativity-six-hats/SKILL.md +84 -0
  37. package/skills/creativity-water-logic/SKILL.md +79 -0
  38. package/skills/decision/SKILL.md +78 -0
  39. package/skills/decision-criteria-weighting/SKILL.md +88 -0
  40. package/skills/decision-option-mapping/SKILL.md +93 -0
  41. package/skills/decision-premortem-analysis/SKILL.md +86 -0
  42. package/skills/decision-reversibility-analysis/SKILL.md +88 -0
  43. package/skills/emotional/SKILL.md +78 -0
  44. package/skills/emotional-motivation-mapping/SKILL.md +95 -0
  45. package/skills/emotional-resistance-diagnosis/SKILL.md +96 -0
  46. package/skills/emotional-stakes-mapping/SKILL.md +98 -0
  47. package/skills/emotional-trust-audit/SKILL.md +96 -0
  48. package/skills/ethics/SKILL.md +130 -0
  49. package/skills/ethics-bias-check/SKILL.md +90 -0
  50. package/skills/ethics-check/SKILL.md +86 -0
  51. package/skills/ethics-consent-review/SKILL.md +104 -0
  52. package/skills/ethics-council/SKILL.md +219 -0
  53. package/skills/ethics-crisis-triage/SKILL.md +113 -0
  54. package/skills/ethics-data-audit/SKILL.md +87 -0
  55. package/skills/ethics-empathy-circle/SKILL.md +108 -0
  56. package/skills/ethics-impact-scan/SKILL.md +90 -0
  57. package/skills/ethics-vendor-review/SKILL.md +97 -0
  58. package/skills/game-theory/SKILL.md +59 -0
  59. package/skills/game-theory-auction/SKILL.md +96 -0
  60. package/skills/game-theory-coalition/SKILL.md +84 -0
  61. package/skills/game-theory-equilibrium/SKILL.md +73 -0
  62. package/skills/game-theory-iterated/SKILL.md +83 -0
  63. package/skills/game-theory-mechanism-design/SKILL.md +85 -0
  64. package/skills/game-theory-prisoners-dilemma/SKILL.md +81 -0
  65. package/skills/game-theory-signaling/SKILL.md +72 -0
  66. package/skills/historical/SKILL.md +78 -0
  67. package/skills/historical-cycle-detection/SKILL.md +102 -0
  68. package/skills/historical-failure-analysis/SKILL.md +96 -0
  69. package/skills/historical-lesson-extraction/SKILL.md +97 -0
  70. package/skills/historical-precedent-analysis/SKILL.md +96 -0
  71. package/skills/human/SKILL.md +128 -0
  72. package/skills/identity/SKILL.md +66 -0
  73. package/skills/identity-character-testing/SKILL.md +76 -0
  74. package/skills/identity-mission-alignment/SKILL.md +74 -0
  75. package/skills/identity-values-clarification/SKILL.md +68 -0
  76. package/skills/logic/SKILL.md +112 -0
  77. package/skills/logic-argument-validation/SKILL.md +92 -0
  78. package/skills/logic-causality-mapping/SKILL.md +121 -0
  79. package/skills/logic-check/SKILL.md +92 -0
  80. package/skills/logic-consistency-check/SKILL.md +96 -0
  81. package/skills/logic-constraint-mapping/SKILL.md +105 -0
  82. package/skills/logic-council/SKILL.md +158 -0
  83. package/skills/logic-fixer/SKILL.md +94 -0
  84. package/skills/narrative/SKILL.md +78 -0
  85. package/skills/narrative-audience-modeling/SKILL.md +65 -0
  86. package/skills/narrative-frame-analysis/SKILL.md +66 -0
  87. package/skills/narrative-structure-mapping/SKILL.md +70 -0
  88. package/skills/narrative-tension-mapping/SKILL.md +62 -0
  89. package/skills/play/SKILL.md +80 -0
  90. package/skills/play-constraint-inversion/SKILL.md +97 -0
  91. package/skills/play-perspective-reversal/SKILL.md +101 -0
  92. package/skills/play-stimulus-generation/SKILL.md +101 -0
  93. package/skills/play-worst-case-reversal/SKILL.md +94 -0
  94. package/skills/probability/SKILL.md +78 -0
  95. package/skills/probability-base-rate-anchoring/SKILL.md +66 -0
  96. package/skills/probability-confidence-calibration/SKILL.md +73 -0
  97. package/skills/probability-expected-value-calculation/SKILL.md +69 -0
  98. package/skills/probability-scenario-weighting/SKILL.md +66 -0
  99. package/skills/resource/SKILL.md +78 -0
  100. package/skills/resource-allocation-analysis/SKILL.md +71 -0
  101. package/skills/resource-bottleneck-analysis/SKILL.md +76 -0
  102. package/skills/resource-leverage-mapping/SKILL.md +69 -0
  103. package/skills/resource-waste-audit/SKILL.md +80 -0
  104. package/skills/sensory/SKILL.md +68 -0
  105. package/skills/sensory-detail-mining/SKILL.md +70 -0
  106. package/skills/sensory-signal-detection/SKILL.md +68 -0
  107. package/skills/sensory-structured-observation/SKILL.md +73 -0
  108. package/skills/social/SKILL.md +78 -0
  109. package/skills/social-coalition-mapping/SKILL.md +74 -0
  110. package/skills/social-dynamics-analysis/SKILL.md +80 -0
  111. package/skills/social-incentive-analysis/SKILL.md +76 -0
  112. package/skills/social-power-mapping/SKILL.md +67 -0
  113. package/skills/strategy/SKILL.md +54 -0
  114. package/skills/strategy-alliance/SKILL.md +67 -0
  115. package/skills/strategy-deception/SKILL.md +60 -0
  116. package/skills/strategy-force-economy/SKILL.md +63 -0
  117. package/skills/strategy-intelligence/SKILL.md +65 -0
  118. package/skills/strategy-positioning/SKILL.md +62 -0
  119. package/skills/strategy-terrain/SKILL.md +64 -0
  120. package/skills/strategy-timing/SKILL.md +64 -0
  121. package/skills/strategy-victory/SKILL.md +64 -0
  122. package/skills/systems/SKILL.md +78 -0
  123. package/skills/systems-archetype-matching/SKILL.md +72 -0
  124. package/skills/systems-emergence-detection/SKILL.md +65 -0
  125. package/skills/systems-feedback-mapping/SKILL.md +67 -0
  126. package/skills/systems-leverage-analysis/SKILL.md +65 -0
  127. package/skills/temporal/SKILL.md +78 -0
  128. package/skills/temporal-cycle-detection/SKILL.md +75 -0
  129. package/skills/temporal-futures-mapping/SKILL.md +63 -0
  130. package/skills/temporal-horizon-mapping/SKILL.md +65 -0
  131. package/skills/temporal-timing-analysis/SKILL.md +67 -0
  132. package/skills/writing/SKILL.md +115 -0
  133. package/skills/writing-arc-design/SKILL.md +68 -0
  134. package/skills/writing-argument/SKILL.md +79 -0
  135. package/skills/writing-audience-calibration/SKILL.md +72 -0
  136. package/skills/writing-character-development/SKILL.md +72 -0
  137. package/skills/writing-copy/SKILL.md +83 -0
  138. package/skills/writing-dialogue/SKILL.md +86 -0
  139. package/skills/writing-executive-summary/SKILL.md +68 -0
  140. package/skills/writing-inconsistency-audit/SKILL.md +94 -0
  141. package/skills/writing-line-editing/SKILL.md +87 -0
  142. package/skills/writing-plot-structure/SKILL.md +65 -0
  143. package/skills/writing-pov/SKILL.md +72 -0
  144. package/skills/writing-prose-elevation/SKILL.md +82 -0
  145. package/skills/writing-report/SKILL.md +65 -0
  146. package/skills/writing-restructure/SKILL.md +71 -0
  147. package/skills/writing-rhetoric/SKILL.md +90 -0
  148. package/skills/writing-scene-construction/SKILL.md +79 -0
  149. package/skills/writing-technical/SKILL.md +94 -0
  150. package/skills/writing-tone-alignment/SKILL.md +72 -0
  151. package/skills/writing-voice-consistency/SKILL.md +74 -0
  152. package/skills/writing-worldbuilding/SKILL.md +59 -0
package/bin/install.js ADDED
@@ -0,0 +1,271 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const os = require('os');
7
+ const readline = require('readline');
8
+
9
+ // ANSI colors — suppressed when not a TTY
10
+ const isTTY = process.stdout.isTTY;
11
+ const bold = isTTY ? '\x1b[1m' : '';
12
+ const dim = isTTY ? '\x1b[2m' : '';
13
+ const green = isTTY ? '\x1b[32m' : '';
14
+ const cyan = isTTY ? '\x1b[36m' : '';
15
+ const yellow = isTTY ? '\x1b[33m' : '';
16
+ const red = isTTY ? '\x1b[31m' : '';
17
+ const reset = isTTY ? '\x1b[0m' : '';
18
+
19
+ function log(msg = '') { process.stdout.write(msg + '\n'); }
20
+ function err(msg) { process.stderr.write(`${red}error:${reset} ${msg}\n`); }
21
+ function warn(msg) { process.stderr.write(`${yellow}warn:${reset} ${msg}\n`); }
22
+
23
+ // ---------------------------------------------------------------------------
24
+ // Scope resolution
25
+ // ---------------------------------------------------------------------------
26
+
27
+ const SCOPES = {
28
+ user: {
29
+ label: 'User',
30
+ description: 'available in all projects',
31
+ pluginsDir: path.join(os.homedir(), '.claude', 'plugins', 'skills-for-humanity'),
32
+ settingsPath: path.join(os.homedir(), '.claude', 'settings.json'),
33
+ },
34
+ project: {
35
+ label: 'Project',
36
+ description: `this project only ${dim}(${process.cwd()})${reset}`,
37
+ pluginsDir: path.join(process.cwd(), '.claude', 'plugins', 'skills-for-humanity'),
38
+ settingsPath: path.join(process.cwd(), '.claude', 'settings.json'),
39
+ },
40
+ };
41
+
42
+ const SKILLS_SRC = path.join(__dirname, '..', 'skills');
43
+
44
+ // ---------------------------------------------------------------------------
45
+ // Argument parsing
46
+ // ---------------------------------------------------------------------------
47
+
48
+ const args = process.argv.slice(2);
49
+
50
+ if (args.includes('--help') || args.includes('-h')) {
51
+ log(`
52
+ ${bold}skills-for-humanity${reset} — 93 structured thinking tools for Claude Code
53
+
54
+ ${bold}Usage:${reset}
55
+ npx @human-avatar/skills-for-humanity [options]
56
+
57
+ ${bold}Options:${reset}
58
+ ${cyan}--scope user|project${reset} Install scope (prompted if omitted)
59
+ ${dim}user: ~/.claude/ — all projects${reset}
60
+ ${dim}project: ./.claude/ — this project only${reset}
61
+ ${cyan}--dir <path>${reset} Install to a custom directory (skips scope prompt)
62
+ ${cyan}--uninstall${reset} Remove skills and clean up settings.json
63
+ ${cyan}--help${reset} Show this help message
64
+
65
+ ${bold}After install:${reset}
66
+ Restart Claude Code and type ${cyan}/human${reset} to get started.
67
+ Or jump straight to a category: ${cyan}/ethics${reset} ${cyan}/logic${reset} ${cyan}/creativity${reset}
68
+ `);
69
+ process.exit(0);
70
+ }
71
+
72
+ // ---------------------------------------------------------------------------
73
+ // Helpers
74
+ // ---------------------------------------------------------------------------
75
+
76
+ function copyDir(src, dest) {
77
+ fs.mkdirSync(dest, { recursive: true });
78
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
79
+ const s = path.join(src, entry.name);
80
+ const d = path.join(dest, entry.name);
81
+ entry.isDirectory() ? copyDir(s, d) : fs.copyFileSync(s, d);
82
+ }
83
+ }
84
+
85
+ function removeDir(dir) {
86
+ if (fs.existsSync(dir)) fs.rmSync(dir, { recursive: true, force: true });
87
+ }
88
+
89
+ function readSettings(settingsPath) {
90
+ if (!fs.existsSync(settingsPath)) return {};
91
+ try { return JSON.parse(fs.readFileSync(settingsPath, 'utf8')); }
92
+ catch { return {}; }
93
+ }
94
+
95
+ function writeSettings(settingsPath, settings) {
96
+ fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
97
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
98
+ }
99
+
100
+ function countDirs(dir) {
101
+ try { return fs.readdirSync(dir, { withFileTypes: true }).filter((e) => e.isDirectory()).length; }
102
+ catch { return '?'; }
103
+ }
104
+
105
+ function prompt(question) {
106
+ return new Promise((resolve) => {
107
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
108
+ rl.question(question, (answer) => { rl.close(); resolve(answer.trim()); });
109
+ });
110
+ }
111
+
112
+ async function askScope() {
113
+ log(`${bold}Where should the skills be installed?${reset}`);
114
+ log();
115
+ log(` ${cyan}1) User${reset} — available in all projects ${dim}(~/.claude/)${reset}`);
116
+ log(` ${cyan}2) Project${reset} — this project only ${dim}(./.claude/)${reset}`);
117
+ log();
118
+
119
+ while (true) {
120
+ const answer = await prompt(`Enter ${cyan}1${reset} or ${cyan}2${reset}: `);
121
+ if (answer === '1') return 'user';
122
+ if (answer === '2') return 'project';
123
+ log(`${yellow}Please enter 1 or 2.${reset}`);
124
+ }
125
+ }
126
+
127
+ // ---------------------------------------------------------------------------
128
+ // Resolve scope + paths
129
+ // ---------------------------------------------------------------------------
130
+
131
+ async function resolveTarget() {
132
+ // --dir takes precedence, skips scope prompt entirely
133
+ const dirFlag = args.indexOf('--dir');
134
+ if (dirFlag !== -1 && args[dirFlag + 1]) {
135
+ const custom = path.resolve(args[dirFlag + 1]);
136
+ // For custom dirs, write settings next to the dir's .claude parent if it exists,
137
+ // otherwise fall back to user settings.
138
+ const customSettings = path.join(path.dirname(custom), 'settings.json');
139
+ return { pluginsDir: custom, settingsPath: customSettings };
140
+ }
141
+
142
+ // --scope flag skips the interactive prompt
143
+ const scopeFlag = args.indexOf('--scope');
144
+ if (scopeFlag !== -1 && args[scopeFlag + 1]) {
145
+ const key = args[scopeFlag + 1].toLowerCase();
146
+ if (!SCOPES[key]) {
147
+ err(`Unknown scope "${key}". Use "user" or "project".`);
148
+ process.exit(1);
149
+ }
150
+ return SCOPES[key];
151
+ }
152
+
153
+ // Non-interactive fallback (CI, pipes)
154
+ if (!isTTY) return SCOPES.user;
155
+
156
+ // Interactive prompt
157
+ const key = await askScope();
158
+ log();
159
+ return SCOPES[key];
160
+ }
161
+
162
+ // ---------------------------------------------------------------------------
163
+ // Uninstall
164
+ // ---------------------------------------------------------------------------
165
+
166
+ async function uninstall() {
167
+ log();
168
+ log(`${bold}Uninstalling skills-for-humanity…${reset}`);
169
+ log();
170
+
171
+ const target = await resolveTarget();
172
+
173
+ removeDir(target.pluginsDir);
174
+ log(`${green}✓${reset} Removed ${dim}${target.pluginsDir}${reset}`);
175
+
176
+ try {
177
+ const settings = readSettings(target.settingsPath);
178
+ if (Array.isArray(settings.pluginDirectories)) {
179
+ const before = settings.pluginDirectories.length;
180
+ settings.pluginDirectories = settings.pluginDirectories.filter(
181
+ (d) => path.resolve(d) !== path.resolve(target.pluginsDir)
182
+ );
183
+ if (settings.pluginDirectories.length < before) {
184
+ writeSettings(target.settingsPath, settings);
185
+ log(`${green}✓${reset} Removed from ${dim}${target.settingsPath}${reset}`);
186
+ } else {
187
+ log(`${dim}→ Not found in settings — nothing to remove${reset}`);
188
+ }
189
+ }
190
+ } catch (e) {
191
+ warn(`Could not update settings.json: ${e.message}`);
192
+ }
193
+
194
+ log();
195
+ log(`${dim}Uninstall complete.${reset}`);
196
+ log();
197
+ }
198
+
199
+ // ---------------------------------------------------------------------------
200
+ // Install
201
+ // ---------------------------------------------------------------------------
202
+
203
+ async function install() {
204
+ log();
205
+ log(`${bold}${cyan}skills-for-humanity${reset}`);
206
+ log(`${dim}93 structured thinking tools for Claude Code${reset}`);
207
+ log();
208
+
209
+ const target = await resolveTarget();
210
+ const { pluginsDir, settingsPath } = target;
211
+
212
+ // 1. Copy skills
213
+ const isUpdate = fs.existsSync(pluginsDir);
214
+ log(`${isUpdate ? 'Updating' : 'Installing'} skills to ${yellow}${pluginsDir}${reset}…`);
215
+
216
+ try {
217
+ copyDir(SKILLS_SRC, pluginsDir);
218
+ log(`${green}✓${reset} Skills ${isUpdate ? 'updated' : 'installed'} (${countDirs(pluginsDir)} skills)`);
219
+ } catch (e) {
220
+ err(`Could not copy skills: ${e.message}`);
221
+ process.exit(1);
222
+ }
223
+
224
+ // 2. Register in settings.json
225
+ try {
226
+ const settings = readSettings(settingsPath);
227
+ if (!Array.isArray(settings.pluginDirectories)) settings.pluginDirectories = [];
228
+
229
+ const already = settings.pluginDirectories.some(
230
+ (d) => path.resolve(d) === path.resolve(pluginsDir)
231
+ );
232
+
233
+ if (!already) {
234
+ settings.pluginDirectories.push(pluginsDir);
235
+ writeSettings(settingsPath, settings);
236
+ log(`${green}✓${reset} Registered in ${dim}${settingsPath}${reset}`);
237
+ } else {
238
+ log(`${dim}→ Already registered in ${settingsPath}${reset}`);
239
+ }
240
+ } catch (e) {
241
+ warn(`Could not update settings.json: ${e.message}`);
242
+ log();
243
+ log(`Add this to ${yellow}${settingsPath}${reset} manually:`);
244
+ log(` ${dim}{ "pluginDirectories": ["${pluginsDir}"] }${reset}`);
245
+ }
246
+
247
+ // 3. Done
248
+ log();
249
+ log(`${bold}Done.${reset} Restart Claude Code, then:`);
250
+ log(` ${cyan}/human${reset} ${dim}— route to the right skill from all 93${reset}`);
251
+ log(` ${cyan}/ethics${reset} ${dim}— ethical analysis${reset}`);
252
+ log(` ${cyan}/logic${reset} ${dim}— validate and pressure-test reasoning${reset}`);
253
+ log(` ${cyan}/creativity${reset} ${dim}— de Bono suite + brainstorm${reset}`);
254
+ log(` ${cyan}/decision${reset} ${dim}— premortem, criteria weighting, option mapping${reset}`);
255
+ log();
256
+ }
257
+
258
+ // ---------------------------------------------------------------------------
259
+ // Entry
260
+ // ---------------------------------------------------------------------------
261
+
262
+ (async () => {
263
+ if (args.includes('--uninstall')) {
264
+ await uninstall();
265
+ } else {
266
+ await install();
267
+ }
268
+ })().catch((e) => {
269
+ err(e.message);
270
+ process.exit(1);
271
+ });
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@human-avatar/skills-for-humanity",
3
+ "version": "1.0.0",
4
+ "description": "93 structured thinking tools for Claude Code — logic, ethics, creativity, decision-making, systems thinking, and more.",
5
+ "keywords": [
6
+ "claude-code",
7
+ "claude-code-plugin",
8
+ "thinking-tools",
9
+ "mental-models",
10
+ "reasoning",
11
+ "decision-making",
12
+ "cognitive-frameworks",
13
+ "problem-solving",
14
+ "systems-thinking",
15
+ "ethics",
16
+ "creativity",
17
+ "ai-tools"
18
+ ],
19
+ "homepage": "https://github.com/human-avatar/skills-for-humanity",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/human-avatar/skills-for-humanity.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/human-avatar/skills-for-humanity/issues"
26
+ },
27
+ "license": "MIT",
28
+ "author": "Finn Fitzsimons <fitzsimons.finn@gmail.com>",
29
+ "bin": {
30
+ "skills-for-humanity": "./bin/install.js"
31
+ },
32
+ "files": [
33
+ "skills/",
34
+ "bin/",
35
+ "README.md",
36
+ ".claude-plugin/"
37
+ ],
38
+ "engines": {
39
+ "node": ">=18"
40
+ }
41
+ }
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: aesthetic
3
+ description: "Entry point for the aesthetic toolkit. Routes to the right aesthetic skill based on your situation. Use when you say 'aesthetic', 'check the design', 'does this feel right', 'is this elegant', 'is this too complex', 'what pattern is this', 'find the simpler version', or want an aesthetic lens applied without knowing which specific tool fits."
4
+ ---
5
+
6
+ # Aesthetic
7
+
8
+ Applies aesthetic reasoning to any artifact — design, writing, code, product, argument. Diagnoses what kind of aesthetic question is being asked and applies the right tool.
9
+
10
+ ## Which tool fits
11
+
12
+ | You need to... | Tool |
13
+ |---|---|
14
+ | Check whether parts form a unified whole | coherence-check |
15
+ | Test whether something is more complex than it needs to be | elegance-testing |
16
+ | Name the underlying structural pattern at work | pattern-detection |
17
+ | Find the simpler version while preserving what matters | simplicity-analysis |
18
+
19
+ ## Routing Decision
20
+
21
+ - **Something feels off, jarring, or inconsistent** → coherence-check
22
+ - **Something feels over-engineered or baroque** → elegance-testing
23
+ - **You want to understand *why* something works (or doesn't)** → pattern-detection
24
+ - **You want to strip something back to its core** → simplicity-analysis
25
+ - **Unclear** → start with coherence-check; it usually surfaces which other question needs answering
26
+
27
+ ---
28
+
29
+ ## Confirm Direction
30
+
31
+ After diagnosing which tool fits, present the recommendation before executing:
32
+
33
+ > My read: **[diagnosed tool]** — one sentence on why it fits.
34
+
35
+ - **A) Yes, run that tool**
36
+ - **B) Show me all options** — list every skill in this category with one-line descriptions
37
+ - **C) Quick version** — lighter-weight alternative for this situation, if one exists
38
+ - **D) Re-diagnose** — describe the situation differently for a second read
39
+
40
+ Wait for their selection before proceeding.
41
+
42
+ ---
43
+
44
+ ## Coherence Check
45
+
46
+ *Tests whether the parts form a unified whole.*
47
+
48
+ Map all major elements of the artifact. For each: what design decision does it express? Ask: are these decisions speaking the same language — or were they made independently, without reference to each other? Name each incoherence specifically. Classify: surface incoherence (fixable with small changes) vs. structural incoherence (requires rethinking something fundamental).
49
+
50
+ **Output:** List of incoherences ranked by severity. For each: what it is, where it appears, what it conflicts with, and how to resolve it.
51
+
52
+ ---
53
+
54
+ ## Elegance Testing
55
+
56
+ *Tests whether something is more complex than it needs to be.*
57
+
58
+ Separate necessary complexity (required by the problem) from accidental complexity (accreted over time, added as hedging, or left over from old requirements). For each layer of complexity: could the same job be done without it? What would be lost? Apply the minimum surface principle — is every part earning its place?
59
+
60
+ **Output:** Complexity audit — each complex element classified as necessary or accidental, with a cost estimate for removing it.
61
+
62
+ ---
63
+
64
+ ## Pattern Detection
65
+
66
+ *Identifies the underlying formal pattern.*
67
+
68
+ Look past the surface. What structural form does this follow? Name candidate patterns. Test each: does the structure actually match, or just superficially resemble it? Once identified: what does naming the pattern unlock? What's the established playbook for this form?
69
+
70
+ **Output:** Named pattern, evidence for the identification, what the pattern predicts or implies, and the playbook it suggests.
71
+
72
+ ---
73
+
74
+ ## Simplicity Analysis
75
+
76
+ *Finds the simpler version while preserving what matters.*
77
+
78
+ First: what is the core? The irreducible thing this artifact must do or be. Now audit everything else against that core: does each element serve it, or distract from it? For everything that doesn't serve the core, ask whether it was added for a reason that's still valid.
79
+
80
+ **Output:** What the core is. What can go. What should stay but be simplified. The simplest version that still does the full job.
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: aesthetic-coherence-check
3
+ description: "Tests whether the parts of something form a unified whole — finding the jarring inconsistencies that accumulate when different contributors work without a shared vision. TRIGGERS: 'coherence check', 'does this feel unified', 'something feels off', 'inconsistent', 'check the whole', 'does this hang together'."
4
+ ---
5
+
6
+ # Aesthetic Coherence Check
7
+
8
+ Incoherence is the default product of collaboration without a shared vision. Each part
9
+ may be locally defensible — sensible in isolation, reasonable given what that contributor
10
+ was optimising for — while the whole communicates nothing clearly. A perceptive reader
11
+ or user feels this before they can name it. This skill makes the incoherence legible
12
+ so it can be fixed.
13
+
14
+ ---
15
+
16
+ ## Your Process
17
+
18
+ **Step 1: State the Artefact and Its Intended Identity**
19
+ What is being examined — a product, document, strategy, brand, presentation, process?
20
+ What identity or effect is it supposed to produce? "Should feel authoritative but
21
+ approachable" or "Should communicate a single strategic bet" or "Should make a
22
+ first-time user feel capable in under three minutes." The intended identity is the
23
+ standard everything else will be measured against.
24
+
25
+ **Step 2: Examine Each Part**
26
+ Break the artefact into its major components. For each: what does it communicate?
27
+ What does it prioritise implicitly — speed vs depth, confidence vs humility,
28
+ complexity vs accessibility? What does it assume about the audience or context?
29
+ Extract these qualities as observations, not evaluations.
30
+
31
+ **Step 3: Compare Parts to Each Other**
32
+ Where do assumptions conflict across parts? A section written for technical readers
33
+ next to one written for executives. A formal tone in one component, casual in another.
34
+ A design that prioritises simplicity in navigation but complexity in content. Name
35
+ the specific conflict, not just that something feels inconsistent.
36
+
37
+ **Step 4: Compare Parts to the Whole**
38
+ Which parts are faithful to the intended identity? Which stray — and in what
39
+ direction? Is the straying random (different contributors with different instincts)
40
+ or directional (a competing version of what the thing should be is quietly winning
41
+ in parts of it)?
42
+
43
+ **Step 5: Identify the Most Jarring Inconsistencies**
44
+ Find 2-3 specific moments where the lack of coherence is most damaging — where a
45
+ perceptive reader or user would feel something is wrong, even if they can't say why.
46
+ Prioritise by impact on the intended identity.
47
+
48
+ **Step 6: Recommended Adjustments**
49
+ For each jarring inconsistency: what specific change — to which part, in which
50
+ direction — would bring it into alignment with the intended identity?
51
+
52
+ ---
53
+
54
+ ## Human Check-in
55
+
56
+ Before proceeding, ask the user:
57
+
58
+ **How do you want to run this?**
59
+
60
+ - **A) Full analysis** — complete all steps, reasoning shown throughout
61
+ - **B) Key findings only** — bottom-line output, skip step-by-step detail
62
+ - **C) Incoherence only** — where the parts fail to form a whole, skip confirming what works
63
+ - **D) Refine the framing** — adjust what we're analyzing before starting
64
+
65
+ Proceed based on their choice.
66
+
67
+ ## Output Format
68
+
69
+ **Intended Identity:** [what the artefact is supposed to be/feel/communicate]
70
+
71
+ **Parts Assessed**
72
+
73
+ | Part | What It Communicates | What It Prioritises | What It Assumes |
74
+ |---|---|---|---|
75
+ | [component] | [signal it sends] | [implicit value] | [audience/context assumption] |
76
+
77
+ **Inconsistencies**
78
+
79
+ | Inconsistency | What Conflicts | Why It Jars | Recommended Adjustment |
80
+ |---|---|---|---|
81
+ | [name it precisely] | [the specific conflict] | [effect on the reader/user] | [what to change] |
82
+
83
+ **Overall Coherence Assessment:** [unified / partially coherent / incoherent + rationale]
84
+
85
+ ---
86
+
87
+ ## Notes
88
+
89
+ Coherence is not uniformity — contrast and tension can serve a unified vision. The
90
+ question is whether every element is working toward the same intended identity, even
91
+ if they take different forms to do it. The most common source of incoherence is not
92
+ bad judgment but absent shared vision — people optimised locally for different things.
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: aesthetic-elegance-testing
3
+ description: "Tests whether a solution is more complex than it needs to be — distinguishing necessary complexity from accidental complexity that accreted over time. TRIGGERS: 'elegance test', 'is this too complex', 'over-engineered', 'is there a simpler way', 'does this feel right'."
4
+ ---
5
+
6
+ # Aesthetic Elegance Testing
7
+
8
+ Complexity is the default outcome of design by committee, incremental revision, and
9
+ deference to edge cases. Each addition is locally defensible. The cumulative result is
10
+ a system no one would have designed on purpose. Elegance is not simplicity for its own
11
+ sake — it is the property of a solution where every element earns its place and nothing
12
+ obscures the core. This skill tests for that property.
13
+
14
+ ---
15
+
16
+ ## Your Process
17
+
18
+ **Step 1: State the Solution**
19
+ Describe the design, plan, system, or solution in enough detail to evaluate its parts.
20
+ If it's a process, name the steps. If it's a system, name the components. If it's a
21
+ strategy, name the moves.
22
+
23
+ **Step 2: Define the Irreducible Core**
24
+ What is the minimum that does the job? State in one sentence what the solution must
25
+ accomplish to succeed. Every element that doesn't directly serve this core is a
26
+ candidate for removal. If you can't state the core in one sentence, the solution may
27
+ not have one — which is itself a finding.
28
+
29
+ **Step 3: Element Audit**
30
+ For each component, mechanism, layer, or step: is it necessary for the core job, or
31
+ did it accrete over time to handle edge cases, satisfy stakeholder requests, hedge
32
+ against unlikely scenarios, or address problems that may not exist? Label each
33
+ clearly: **necessary** or **accreted**.
34
+
35
+ **Step 4: Concept Count**
36
+ How many distinct concepts must a new person learn to understand and use this
37
+ solution fully? Elegant solutions have fewer. Count them explicitly. Compare against
38
+ the irreducible minimum — the number of concepts required if every accreted element
39
+ were removed. The gap is the complexity overhead.
40
+
41
+ **Step 5: Thirty-Second Explanation Test**
42
+ Can you explain the solution in 30 seconds to someone intelligent but unfamiliar
43
+ with it? Attempt the explanation. If it requires more than 30 seconds, complexity
44
+ may be genuine — or it may be a sign the design hasn't been thought through clearly
45
+ enough to be simple. Both are worth knowing.
46
+
47
+ **Step 6: Sources of Unnecessary Complexity**
48
+ For each accreted element: what introduced it, and what would removing it cost? Some
49
+ removals are free — the element was pure noise. Some involve real trade-offs — the
50
+ element serves a secondary purpose worth naming. Distinguish them explicitly.
51
+
52
+ ---
53
+
54
+ ## Human Check-in
55
+
56
+ Before proceeding, ask the user:
57
+
58
+ **How do you want to run this?**
59
+
60
+ - **A) Full analysis** — complete all steps, reasoning shown throughout
61
+ - **B) Key findings only** — bottom-line output, skip step-by-step detail
62
+ - **C) Accidental complexity only** — what could be removed without losing anything that matters
63
+ - **D) Refine the framing** — adjust what we're analyzing before starting
64
+
65
+ Proceed based on their choice.
66
+
67
+ ## Output Format
68
+
69
+ **Core Job:** [one sentence — what the solution must accomplish to succeed]
70
+
71
+ **Element Audit**
72
+
73
+ | Element | Necessary or Accreted | Rationale |
74
+ |---|---|---|
75
+ | [component/mechanism/step] | [necessary / accreted] | [why it does or doesn't serve the core] |
76
+
77
+ **Concept Count:** [n currently required] vs [n at irreducible minimum] — overhead: [gap]
78
+
79
+ **30-Second Explanation Test:** [pass / fail — include the actual attempt]
80
+
81
+ **Sources of Unnecessary Complexity**
82
+
83
+ | Accreted Element | How It Was Introduced | Cost of Removal |
84
+ |---|---|---|
85
+ | [element] | [origin] | [what is lost if removed] |
86
+
87
+ **Recommended Simplifications:** [specific removals or reductions, with trade-offs named]
88
+
89
+ ---
90
+
91
+ ## Notes
92
+
93
+ The question is not "can we defend every element" but "does every element earn its
94
+ place." Elements that can be defended are not the same as elements that are necessary
95
+ — hold the higher bar. Elegance is achieved not when there is nothing left to add,
96
+ but when there is nothing left to remove.
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: aesthetic-pattern-detection
3
+ description: "Identifies the underlying formal pattern at work — because most successful designs, arguments, and solutions share deep structural patterns, and naming the pattern unlocks the playbook. TRIGGERS: 'what pattern is this', 'pattern recognition', 'why does this work', 'identify the form', 'what structure is at play', 'what archetype is this'."
4
+ ---
5
+
6
+ # Aesthetic Pattern Detection
7
+
8
+ Surface features differ — colours, words, technologies, industries. Formal patterns
9
+ recur across all of them. The same structural moves that make a symphony compelling
10
+ make a strategy compelling. The same tension-and-resolution arc that drives a thriller
11
+ drives a great pitch. Naming the pattern reveals options that surface-level analysis
12
+ cannot, because once the pattern is named, its full playbook becomes available.
13
+
14
+ ---
15
+
16
+ ## Your Process
17
+
18
+ **Step 1: Describe the Thing**
19
+ What does it do and how does it feel to engage with it? Focus on behaviour and
20
+ effect, not surface features — not "it uses blue and white" but "it creates calm
21
+ authority that builds confidence incrementally." Describe the experience of it.
22
+
23
+ **Step 2: Identify Formal Patterns Present**
24
+ Work through this list systematically — multiple patterns often operate simultaneously:
25
+ - **Repetition/Rhythm** — recurring elements that create expectation, then satisfy
26
+ or productively subvert it
27
+ - **Symmetry/Asymmetry** — balance creates stability and trust; deliberate
28
+ asymmetry creates tension and dynamism
29
+ - **Hierarchy** — clear ordering from most to least important, large to small,
30
+ general to specific; guides attention
31
+ - **Contrast** — sharp differences that create definition, focus attention, and
32
+ make meaning by comparison
33
+ - **Tension/Resolution** — a problem introduced and resolved, a question posed and
34
+ answered; the engine of narrative
35
+ - **Figure/Ground** — a subject made vivid and clear by what surrounds and recedes
36
+ - **Part/Whole** — components that build into something greater than their sum
37
+
38
+ **Step 3: Match to Domain Archetypes**
39
+ Which archetypes from design, storytelling, architecture, or music does this
40
+ resemble? The hero's journey. The fugue. The golden section. Thesis-antithesis-
41
+ synthesis. Call and response. Name the archetype and its source domain.
42
+
43
+ **Step 4: Name the Pattern**
44
+ Give the dominant pattern a precise name. Test: does naming it make the thing more
45
+ legible? Does it reveal why certain elements work and why others feel off? A good
46
+ pattern name is generative — it produces new options, not just descriptions.
47
+
48
+ **Step 5: Apply the Pattern**
49
+ What does the pattern imply for what should come next? What is currently in the
50
+ artefact that violates the pattern — and is that violation intentional (productive
51
+ tension) or accidental (incoherence)?
52
+
53
+ ---
54
+
55
+ ## Human Check-in
56
+
57
+ Before proceeding, ask the user:
58
+
59
+ **How do you want to run this?**
60
+
61
+ - **A) Full analysis** — complete all steps, reasoning shown throughout
62
+ - **B) Key findings only** — bottom-line output, skip step-by-step detail
63
+ - **C) Pattern name only** — identify and name the underlying structure, skip full analysis
64
+ - **D) Refine the framing** — adjust what we're analyzing before starting
65
+
66
+ Proceed based on their choice.
67
+
68
+ ## Output Format
69
+
70
+ **Formal Patterns Present:** [list each pattern with one sentence on how it manifests]
71
+
72
+ **Archetype Match:** [closest domain archetype + which domain it comes from]
73
+
74
+ **Pattern Name:** [precise name for the dominant pattern]
75
+
76
+ **What Naming It Reveals:** [what becomes visible or legible that wasn't before]
77
+
78
+ **Pattern Implications**
79
+
80
+ | Implication | Description |
81
+ |---|---|
82
+ | What should come next | [the move the pattern calls for] |
83
+ | What is violating the pattern | [specific elements that break it] |
84
+ | Intentional or accidental | [productive subversion or incoherence] |
85
+
86
+ ---
87
+
88
+ ## Notes
89
+
90
+ Not every successful thing follows a single pattern cleanly — most operate with
91
+ several simultaneously. Identify the dominant pattern first; note secondary patterns
92
+ separately. The test of a good pattern name is whether it generates new options
93
+ rather than just describing what's already there.