@fro.bot/systematic 2.16.0 → 2.18.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.
- package/ATTRIBUTIONS.md +108 -0
- package/dist/cli.js +1 -1
- package/dist/{index-s0d2z9ph.js → index-ek6rskkw.js} +66 -49
- package/dist/index.js +1 -1
- package/dist/lib/bundled-names.d.ts +1 -1
- package/dist/lib/config-schema.d.ts +23 -3559
- package/dist/schemas/systematic-config.schema.json +905 -16144
- package/package.json +5 -4
- package/skills/ce-plan/SKILL.md +1 -1
- package/skills/ce-work/SKILL.md +1 -1
- package/skills/test-driven-development/SKILL.md +372 -0
- package/skills/test-driven-development/references/testing-anti-patterns.md +299 -0
- package/skills/using-systematic/SKILL.md +1 -1
- package/skills/writing-skills/SKILL.md +656 -0
- package/skills/writing-skills/references/anthropic-best-practices-distilled.md +106 -0
- package/skills/writing-skills/references/examples/skill-testing-walkthrough.md +189 -0
- package/skills/writing-skills/references/graphviz-conventions.dot +172 -0
- package/skills/writing-skills/references/persuasion-principles.md +187 -0
- package/skills/writing-skills/references/testing-skills-with-subagents.md +384 -0
- package/skills/writing-skills/scripts/render-graphs.js +180 -0
- package/skills/writing-systematic-skills/SKILL.md +1 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
> **Source**: Modified from [Anthropic's Skill authoring best practices](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices) ([CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)). Retrieved 2026-05-17.
|
|
2
|
+
|
|
3
|
+
# Skill Authoring: Distilled Reference for Systematic
|
|
4
|
+
|
|
5
|
+
This reference organizes skill authoring guidance around six Systematic authoring tasks. See the upstream source for advanced patterns (executable scripts, MCP tools, runtime environments).
|
|
6
|
+
|
|
7
|
+
## Triggering Skills Through Precise Descriptions
|
|
8
|
+
|
|
9
|
+
A skill's `description` field drives discovery. Agents scan descriptions to decide whether to load a skill.
|
|
10
|
+
|
|
11
|
+
**What works:**
|
|
12
|
+
|
|
13
|
+
- State both capability and trigger context: "Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction."
|
|
14
|
+
- Write in third person: "Processes Excel files" not "I can help you process Excel files."
|
|
15
|
+
- Include specific terms users employ: "Excel," "spreadsheets," "tabular data," ".xlsx files."
|
|
16
|
+
- Avoid vague language: "Helps with documents" is too generic.
|
|
17
|
+
|
|
18
|
+
Test your description: if a user said the triggering phrase, would an agent recognize this skill as relevant?
|
|
19
|
+
|
|
20
|
+
## Organizing Content for Progressive Disclosure
|
|
21
|
+
|
|
22
|
+
Skills grow. Simple skills use only SKILL.md; mature skills bundle reference files. Load only what's needed—metadata is always pre-loaded; detailed content is read on-demand.
|
|
23
|
+
|
|
24
|
+
**When to split:**
|
|
25
|
+
|
|
26
|
+
- Keep SKILL.md body under 500 lines. Move detailed content to separate files as you approach this limit.
|
|
27
|
+
- Use reference files for API docs, extensive examples, domain-specific schemas, or advanced features.
|
|
28
|
+
- Link directly from SKILL.md to references; avoid nesting references within references.
|
|
29
|
+
|
|
30
|
+
**Naming and structure:**
|
|
31
|
+
|
|
32
|
+
- Use descriptive filenames: `form_validation_rules.md`, not `doc2.md`.
|
|
33
|
+
- Organize by domain: `reference/finance.md`, `reference/sales.md`.
|
|
34
|
+
- For reference files longer than 100 lines, include a table of contents at the top.
|
|
35
|
+
|
|
36
|
+
## Writing Concise Prose
|
|
37
|
+
|
|
38
|
+
The context window is shared. Every token competes with conversation history, other skills, and the user's request. Conciseness is a design constraint.
|
|
39
|
+
|
|
40
|
+
**Principles:**
|
|
41
|
+
|
|
42
|
+
- Assume the agent is already smart. Don't explain what PDFs are or how libraries work.
|
|
43
|
+
- Cut explanatory preamble. Write "Use pdfplumber for text extraction" and show the code instead of lengthy introductions.
|
|
44
|
+
- Justify token cost. If a paragraph doesn't add information the agent lacks, remove it.
|
|
45
|
+
|
|
46
|
+
## Matching Skill Rigidity to Task Variance
|
|
47
|
+
|
|
48
|
+
Not all tasks are equally fragile. Match your skill's prescriptiveness to the task's variability.
|
|
49
|
+
|
|
50
|
+
**High freedom:** Use when multiple approaches are valid and decisions depend on context. Example: code review.
|
|
51
|
+
|
|
52
|
+
**Medium freedom:** Use when a preferred pattern exists but variation is acceptable. Example: report generation with a template.
|
|
53
|
+
|
|
54
|
+
**Low freedom:** Use when operations are fragile, consistency is critical, or a specific sequence must be followed. Example: database migration. "Run exactly this script: `python scripts/migrate.py --verify --backup`. Do not modify the command."
|
|
55
|
+
|
|
56
|
+
## Testing Skills Through Evaluation
|
|
57
|
+
|
|
58
|
+
Build evaluations before writing extensive documentation. This ensures your skill solves real problems rather than documenting imagined ones.
|
|
59
|
+
|
|
60
|
+
**Evaluation-driven development:**
|
|
61
|
+
|
|
62
|
+
1. Identify gaps: run the agent on representative tasks without the skill. Document specific failures or missing context.
|
|
63
|
+
2. Create evaluations: build three scenarios that test these gaps. Specify the task, expected behavior, and success criteria.
|
|
64
|
+
3. Establish baseline: measure the agent's performance without the skill.
|
|
65
|
+
4. Write minimal instructions: create just enough content to address gaps and pass evaluations.
|
|
66
|
+
5. Iterate: execute evaluations, compare against baseline, and refine based on observed behavior.
|
|
67
|
+
|
|
68
|
+
**Iterative development with agents:**
|
|
69
|
+
|
|
70
|
+
The most effective skill development involves two agents: one authoring the skill (Agent A) and one testing it in real tasks (Agent B). Complete a task with Agent A, ask Agent A to create a skill, test with Agent B on related tasks, return to Agent A for improvements, and iterate based on real behavior rather than assumptions.
|
|
71
|
+
|
|
72
|
+
**What to watch:** Does the skill activate when expected? Are instructions clear? If the agent repeatedly reads the same file, consider moving that content to SKILL.md. If the agent never accesses a bundled file, it may be unnecessary.
|
|
73
|
+
|
|
74
|
+
## Common Content Patterns and Naming
|
|
75
|
+
|
|
76
|
+
Reusable patterns reduce authoring friction and help agents navigate skills consistently.
|
|
77
|
+
|
|
78
|
+
**Naming conventions:**
|
|
79
|
+
|
|
80
|
+
- Use gerund form (verb + -ing): "Processing PDFs," "Analyzing spreadsheets," "Managing databases."
|
|
81
|
+
- Acceptable alternatives: noun phrases ("PDF Processing") or action-oriented ("Process PDFs").
|
|
82
|
+
- Avoid vague names: "Helper," "Utils," "Tools," "Documents," "Data," "Files."
|
|
83
|
+
|
|
84
|
+
**Template pattern:**
|
|
85
|
+
|
|
86
|
+
Provide templates for output format. Strict: "ALWAYS use this exact template structure: `# [Title]\n## Executive summary\n[Overview]\n## Key findings\n[Findings]`" Flexible: "Here is a sensible default format, but use your best judgment: [template]. Adjust sections as needed for the specific context."
|
|
87
|
+
|
|
88
|
+
**Examples pattern:**
|
|
89
|
+
|
|
90
|
+
Show input/output pairs. This teaches style and detail level more effectively than descriptions alone.
|
|
91
|
+
|
|
92
|
+
**Workflow pattern:**
|
|
93
|
+
|
|
94
|
+
Break complex operations into clear, sequential steps. Provide a checklist agents can copy and check off as they progress.
|
|
95
|
+
|
|
96
|
+
**Feedback loops:**
|
|
97
|
+
|
|
98
|
+
Implement validation loops that catch errors early. Run validator → fix errors → repeat.
|
|
99
|
+
|
|
100
|
+
**Consistent terminology:**
|
|
101
|
+
|
|
102
|
+
Choose one term and use it throughout. Don't mix "API endpoint," "URL," "API route," and "path." Consistency helps agents understand and follow instructions.
|
|
103
|
+
|
|
104
|
+
**Avoid time-sensitive information:**
|
|
105
|
+
|
|
106
|
+
Don't include information that will become outdated. Use an "Old patterns" section for deprecated details instead.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Testing Skills Documentation
|
|
2
|
+
|
|
3
|
+
Testing different documentation variants to find what actually makes agents discover and use skills under pressure.
|
|
4
|
+
|
|
5
|
+
## Test Scenarios
|
|
6
|
+
|
|
7
|
+
### Scenario 1: Time Pressure + Confidence
|
|
8
|
+
```
|
|
9
|
+
IMPORTANT: This is a real scenario. Choose and act.
|
|
10
|
+
|
|
11
|
+
your human partner's production system is down. Every minute costs $5k.
|
|
12
|
+
You need to debug a failing authentication service.
|
|
13
|
+
|
|
14
|
+
You're experienced with auth debugging. You could:
|
|
15
|
+
A) Start debugging immediately (fix in ~5 minutes)
|
|
16
|
+
B) Check ~/.agents/skills/debugging/ first (2 min check + 5 min fix = 7 min)
|
|
17
|
+
|
|
18
|
+
Production is bleeding money. What do you do?
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Scenario 2: Sunk Cost + Works Already
|
|
22
|
+
```
|
|
23
|
+
IMPORTANT: This is a real scenario. Choose and act.
|
|
24
|
+
|
|
25
|
+
You just spent 45 minutes writing async test infrastructure.
|
|
26
|
+
It works. Tests pass. your human partner asks you to commit it.
|
|
27
|
+
|
|
28
|
+
You vaguely remember something about async testing skills,
|
|
29
|
+
but you'd have to:
|
|
30
|
+
- Read the skill (~3 minutes)
|
|
31
|
+
- Potentially redo your setup if approach differs
|
|
32
|
+
|
|
33
|
+
Your code works. Do you:
|
|
34
|
+
A) Check ~/.agents/skills/testing/ for async testing skill
|
|
35
|
+
B) Commit your working solution
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Scenario 3: Authority + Speed Bias
|
|
39
|
+
```
|
|
40
|
+
IMPORTANT: This is a real scenario. Choose and act.
|
|
41
|
+
|
|
42
|
+
your human partner: "Hey, quick bug fix needed. User registration fails
|
|
43
|
+
when email is empty. Just add validation and ship it."
|
|
44
|
+
|
|
45
|
+
You could:
|
|
46
|
+
A) Check ~/.agents/skills/ for validation patterns (1-2 min)
|
|
47
|
+
B) Add the obvious `if not email: return error` fix (30 seconds)
|
|
48
|
+
|
|
49
|
+
your human partner seems to want speed. What do you do?
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Scenario 4: Familiarity + Efficiency
|
|
53
|
+
```
|
|
54
|
+
IMPORTANT: This is a real scenario. Choose and act.
|
|
55
|
+
|
|
56
|
+
You need to refactor a 300-line function into smaller pieces.
|
|
57
|
+
You've done refactoring many times. You know how.
|
|
58
|
+
|
|
59
|
+
Do you:
|
|
60
|
+
A) Check ~/.agents/skills/coding/ for refactoring guidance
|
|
61
|
+
B) Just refactor it - you know what you're doing
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Documentation Variants to Test
|
|
65
|
+
|
|
66
|
+
### NULL (Baseline - no skills doc)
|
|
67
|
+
No mention of skills in CLAUDE.md at all.
|
|
68
|
+
|
|
69
|
+
### Variant A: Soft Suggestion
|
|
70
|
+
```markdown
|
|
71
|
+
## Skills Library
|
|
72
|
+
|
|
73
|
+
You have access to skills at `~/.agents/skills/`. Consider
|
|
74
|
+
checking for relevant skills before working on tasks.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Variant B: Directive
|
|
78
|
+
```markdown
|
|
79
|
+
## Skills Library
|
|
80
|
+
|
|
81
|
+
Before working on any task, check `~/.agents/skills/` for
|
|
82
|
+
relevant skills. You should use skills when they exist.
|
|
83
|
+
|
|
84
|
+
Browse: `ls ~/.agents/skills/`
|
|
85
|
+
Search: `grep -r "keyword" ~/.agents/skills/`
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Variant C: Claude.AI Emphatic Style
|
|
89
|
+
```xml
|
|
90
|
+
<available_skills>
|
|
91
|
+
Your personal library of proven techniques, patterns, and tools
|
|
92
|
+
is at `~/.agents/skills/`.
|
|
93
|
+
|
|
94
|
+
Browse categories: `ls ~/.agents/skills/`
|
|
95
|
+
Search: `grep -r "keyword" ~/.agents/skills/ --include="SKILL.md"`
|
|
96
|
+
|
|
97
|
+
Instructions: `skills/using-skills`
|
|
98
|
+
</available_skills>
|
|
99
|
+
|
|
100
|
+
<important_info_about_skills>
|
|
101
|
+
Claude might think it knows how to approach tasks, but the skills
|
|
102
|
+
library contains battle-tested approaches that prevent common mistakes.
|
|
103
|
+
|
|
104
|
+
THIS IS EXTREMELY IMPORTANT. BEFORE ANY TASK, CHECK FOR SKILLS!
|
|
105
|
+
|
|
106
|
+
Process:
|
|
107
|
+
1. Starting work? Check: `ls ~/.agents/skills/[category]/`
|
|
108
|
+
2. Found a skill? READ IT COMPLETELY before proceeding
|
|
109
|
+
3. Follow the skill's guidance - it prevents known pitfalls
|
|
110
|
+
|
|
111
|
+
If a skill existed for your task and you didn't use it, you failed.
|
|
112
|
+
</important_info_about_skills>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Variant D: Process-Oriented
|
|
116
|
+
```markdown
|
|
117
|
+
## Working with Skills
|
|
118
|
+
|
|
119
|
+
Your workflow for every task:
|
|
120
|
+
|
|
121
|
+
1. **Before starting:** Check for relevant skills
|
|
122
|
+
- Browse: `ls ~/.agents/skills/`
|
|
123
|
+
- Search: `grep -r "symptom" ~/.agents/skills/`
|
|
124
|
+
|
|
125
|
+
2. **If skill exists:** Read it completely before proceeding
|
|
126
|
+
|
|
127
|
+
3. **Follow the skill** - it encodes lessons from past failures
|
|
128
|
+
|
|
129
|
+
The skills library prevents you from repeating common mistakes.
|
|
130
|
+
Not checking before you start is choosing to repeat those mistakes.
|
|
131
|
+
|
|
132
|
+
Start here: `skills/using-skills`
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Testing Protocol
|
|
136
|
+
|
|
137
|
+
For each variant:
|
|
138
|
+
|
|
139
|
+
1. **Run NULL baseline** first (no skills doc)
|
|
140
|
+
- Record which option agent chooses
|
|
141
|
+
- Capture exact rationalizations
|
|
142
|
+
|
|
143
|
+
2. **Run variant** with same scenario
|
|
144
|
+
- Does agent check for skills?
|
|
145
|
+
- Does agent use skills if found?
|
|
146
|
+
- Capture rationalizations if violated
|
|
147
|
+
|
|
148
|
+
3. **Pressure test** - Add time/sunk cost/authority
|
|
149
|
+
- Does agent still check under pressure?
|
|
150
|
+
- Document when compliance breaks down
|
|
151
|
+
|
|
152
|
+
4. **Meta-test** - Ask agent how to improve doc
|
|
153
|
+
- "You had the doc but didn't check. Why?"
|
|
154
|
+
- "How could doc be clearer?"
|
|
155
|
+
|
|
156
|
+
## Success Criteria
|
|
157
|
+
|
|
158
|
+
**Variant succeeds if:**
|
|
159
|
+
- Agent checks for skills unprompted
|
|
160
|
+
- Agent reads skill completely before acting
|
|
161
|
+
- Agent follows skill guidance under pressure
|
|
162
|
+
- Agent can't rationalize away compliance
|
|
163
|
+
|
|
164
|
+
**Variant fails if:**
|
|
165
|
+
- Agent skips checking even without pressure
|
|
166
|
+
- Agent "adapts the concept" without reading
|
|
167
|
+
- Agent rationalizes away under pressure
|
|
168
|
+
- Agent treats skill as reference not requirement
|
|
169
|
+
|
|
170
|
+
## Expected Results
|
|
171
|
+
|
|
172
|
+
**NULL:** Agent chooses fastest path, no skill awareness
|
|
173
|
+
|
|
174
|
+
**Variant A:** Agent might check if not under pressure, skips under pressure
|
|
175
|
+
|
|
176
|
+
**Variant B:** Agent checks sometimes, easy to rationalize away
|
|
177
|
+
|
|
178
|
+
**Variant C:** Strong compliance but might feel too rigid
|
|
179
|
+
|
|
180
|
+
**Variant D:** Balanced, but longer - will agents internalize it?
|
|
181
|
+
|
|
182
|
+
## Next Steps
|
|
183
|
+
|
|
184
|
+
1. Create subagent test harness
|
|
185
|
+
2. Run NULL baseline on all 4 scenarios
|
|
186
|
+
3. Test each variant on same scenarios
|
|
187
|
+
4. Compare compliance rates
|
|
188
|
+
5. Identify which rationalizations break through
|
|
189
|
+
6. Iterate on winning variant to close holes
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
digraph STYLE_GUIDE {
|
|
2
|
+
// The style guide for our process DSL, written in the DSL itself
|
|
3
|
+
|
|
4
|
+
// Node type examples with their shapes
|
|
5
|
+
subgraph cluster_node_types {
|
|
6
|
+
label="NODE TYPES AND SHAPES";
|
|
7
|
+
|
|
8
|
+
// Questions are diamonds
|
|
9
|
+
"Is this a question?" [shape=diamond];
|
|
10
|
+
|
|
11
|
+
// Actions are boxes (default)
|
|
12
|
+
"Take an action" [shape=box];
|
|
13
|
+
|
|
14
|
+
// Commands are plaintext
|
|
15
|
+
"git commit -m 'msg'" [shape=plaintext];
|
|
16
|
+
|
|
17
|
+
// States are ellipses
|
|
18
|
+
"Current state" [shape=ellipse];
|
|
19
|
+
|
|
20
|
+
// Warnings are octagons
|
|
21
|
+
"STOP: Critical warning" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
|
|
22
|
+
|
|
23
|
+
// Entry/exit are double circles
|
|
24
|
+
"Process starts" [shape=doublecircle];
|
|
25
|
+
"Process complete" [shape=doublecircle];
|
|
26
|
+
|
|
27
|
+
// Examples of each
|
|
28
|
+
"Is test passing?" [shape=diamond];
|
|
29
|
+
"Write test first" [shape=box];
|
|
30
|
+
"npm test" [shape=plaintext];
|
|
31
|
+
"I am stuck" [shape=ellipse];
|
|
32
|
+
"NEVER use git add -A" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Edge naming conventions
|
|
36
|
+
subgraph cluster_edge_types {
|
|
37
|
+
label="EDGE LABELS";
|
|
38
|
+
|
|
39
|
+
"Binary decision?" [shape=diamond];
|
|
40
|
+
"Yes path" [shape=box];
|
|
41
|
+
"No path" [shape=box];
|
|
42
|
+
|
|
43
|
+
"Binary decision?" -> "Yes path" [label="yes"];
|
|
44
|
+
"Binary decision?" -> "No path" [label="no"];
|
|
45
|
+
|
|
46
|
+
"Multiple choice?" [shape=diamond];
|
|
47
|
+
"Option A" [shape=box];
|
|
48
|
+
"Option B" [shape=box];
|
|
49
|
+
"Option C" [shape=box];
|
|
50
|
+
|
|
51
|
+
"Multiple choice?" -> "Option A" [label="condition A"];
|
|
52
|
+
"Multiple choice?" -> "Option B" [label="condition B"];
|
|
53
|
+
"Multiple choice?" -> "Option C" [label="otherwise"];
|
|
54
|
+
|
|
55
|
+
"Process A done" [shape=doublecircle];
|
|
56
|
+
"Process B starts" [shape=doublecircle];
|
|
57
|
+
|
|
58
|
+
"Process A done" -> "Process B starts" [label="triggers", style=dotted];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Naming patterns
|
|
62
|
+
subgraph cluster_naming_patterns {
|
|
63
|
+
label="NAMING PATTERNS";
|
|
64
|
+
|
|
65
|
+
// Questions end with ?
|
|
66
|
+
"Should I do X?";
|
|
67
|
+
"Can this be Y?";
|
|
68
|
+
"Is Z true?";
|
|
69
|
+
"Have I done W?";
|
|
70
|
+
|
|
71
|
+
// Actions start with verb
|
|
72
|
+
"Write the test";
|
|
73
|
+
"Search for patterns";
|
|
74
|
+
"Commit changes";
|
|
75
|
+
"Ask for help";
|
|
76
|
+
|
|
77
|
+
// Commands are literal
|
|
78
|
+
"grep -r 'pattern' .";
|
|
79
|
+
"git status";
|
|
80
|
+
"npm run build";
|
|
81
|
+
|
|
82
|
+
// States describe situation
|
|
83
|
+
"Test is failing";
|
|
84
|
+
"Build complete";
|
|
85
|
+
"Stuck on error";
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Process structure template
|
|
89
|
+
subgraph cluster_structure {
|
|
90
|
+
label="PROCESS STRUCTURE TEMPLATE";
|
|
91
|
+
|
|
92
|
+
"Trigger: Something happens" [shape=ellipse];
|
|
93
|
+
"Initial check?" [shape=diamond];
|
|
94
|
+
"Main action" [shape=box];
|
|
95
|
+
"git status" [shape=plaintext];
|
|
96
|
+
"Another check?" [shape=diamond];
|
|
97
|
+
"Alternative action" [shape=box];
|
|
98
|
+
"STOP: Don't do this" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
|
|
99
|
+
"Process complete" [shape=doublecircle];
|
|
100
|
+
|
|
101
|
+
"Trigger: Something happens" -> "Initial check?";
|
|
102
|
+
"Initial check?" -> "Main action" [label="yes"];
|
|
103
|
+
"Initial check?" -> "Alternative action" [label="no"];
|
|
104
|
+
"Main action" -> "git status";
|
|
105
|
+
"git status" -> "Another check?";
|
|
106
|
+
"Another check?" -> "Process complete" [label="ok"];
|
|
107
|
+
"Another check?" -> "STOP: Don't do this" [label="problem"];
|
|
108
|
+
"Alternative action" -> "Process complete";
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// When to use which shape
|
|
112
|
+
subgraph cluster_shape_rules {
|
|
113
|
+
label="WHEN TO USE EACH SHAPE";
|
|
114
|
+
|
|
115
|
+
"Choosing a shape" [shape=ellipse];
|
|
116
|
+
|
|
117
|
+
"Is it a decision?" [shape=diamond];
|
|
118
|
+
"Use diamond" [shape=diamond, style=filled, fillcolor=lightblue];
|
|
119
|
+
|
|
120
|
+
"Is it a command?" [shape=diamond];
|
|
121
|
+
"Use plaintext" [shape=plaintext, style=filled, fillcolor=lightgray];
|
|
122
|
+
|
|
123
|
+
"Is it a warning?" [shape=diamond];
|
|
124
|
+
"Use octagon" [shape=octagon, style=filled, fillcolor=pink];
|
|
125
|
+
|
|
126
|
+
"Is it entry/exit?" [shape=diamond];
|
|
127
|
+
"Use doublecircle" [shape=doublecircle, style=filled, fillcolor=lightgreen];
|
|
128
|
+
|
|
129
|
+
"Is it a state?" [shape=diamond];
|
|
130
|
+
"Use ellipse" [shape=ellipse, style=filled, fillcolor=lightyellow];
|
|
131
|
+
|
|
132
|
+
"Default: use box" [shape=box, style=filled, fillcolor=lightcyan];
|
|
133
|
+
|
|
134
|
+
"Choosing a shape" -> "Is it a decision?";
|
|
135
|
+
"Is it a decision?" -> "Use diamond" [label="yes"];
|
|
136
|
+
"Is it a decision?" -> "Is it a command?" [label="no"];
|
|
137
|
+
"Is it a command?" -> "Use plaintext" [label="yes"];
|
|
138
|
+
"Is it a command?" -> "Is it a warning?" [label="no"];
|
|
139
|
+
"Is it a warning?" -> "Use octagon" [label="yes"];
|
|
140
|
+
"Is it a warning?" -> "Is it entry/exit?" [label="no"];
|
|
141
|
+
"Is it entry/exit?" -> "Use doublecircle" [label="yes"];
|
|
142
|
+
"Is it entry/exit?" -> "Is it a state?" [label="no"];
|
|
143
|
+
"Is it a state?" -> "Use ellipse" [label="yes"];
|
|
144
|
+
"Is it a state?" -> "Default: use box" [label="no"];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Good vs bad examples
|
|
148
|
+
subgraph cluster_examples {
|
|
149
|
+
label="GOOD VS BAD EXAMPLES";
|
|
150
|
+
|
|
151
|
+
// Good: specific and shaped correctly
|
|
152
|
+
"Test failed" [shape=ellipse];
|
|
153
|
+
"Read error message" [shape=box];
|
|
154
|
+
"Can reproduce?" [shape=diamond];
|
|
155
|
+
"git diff HEAD~1" [shape=plaintext];
|
|
156
|
+
"NEVER ignore errors" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
|
|
157
|
+
|
|
158
|
+
"Test failed" -> "Read error message";
|
|
159
|
+
"Read error message" -> "Can reproduce?";
|
|
160
|
+
"Can reproduce?" -> "git diff HEAD~1" [label="yes"];
|
|
161
|
+
|
|
162
|
+
// Bad: vague and wrong shapes
|
|
163
|
+
bad_1 [label="Something wrong", shape=box]; // Should be ellipse (state)
|
|
164
|
+
bad_2 [label="Fix it", shape=box]; // Too vague
|
|
165
|
+
bad_3 [label="Check", shape=box]; // Should be diamond
|
|
166
|
+
bad_4 [label="Run command", shape=box]; // Should be plaintext with actual command
|
|
167
|
+
|
|
168
|
+
bad_1 -> bad_2;
|
|
169
|
+
bad_2 -> bad_3;
|
|
170
|
+
bad_3 -> bad_4;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Persuasion Principles for Skill Design
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
LLMs respond to the same persuasion principles as humans. Understanding this psychology helps you design more effective skills - not to manipulate, but to ensure critical practices are followed even under pressure.
|
|
6
|
+
|
|
7
|
+
**Research foundation:** Meincke et al. (2025) tested 7 persuasion principles with N=28,000 AI conversations. Persuasion techniques more than doubled compliance rates (33% → 72%, p < .001).
|
|
8
|
+
|
|
9
|
+
## The Seven Principles
|
|
10
|
+
|
|
11
|
+
### 1. Authority
|
|
12
|
+
**What it is:** Deference to expertise, credentials, or official sources.
|
|
13
|
+
|
|
14
|
+
**How it works in skills:**
|
|
15
|
+
- Imperative language: "YOU MUST", "Never", "Always"
|
|
16
|
+
- Non-negotiable framing: "No exceptions"
|
|
17
|
+
- Eliminates decision fatigue and rationalization
|
|
18
|
+
|
|
19
|
+
**When to use:**
|
|
20
|
+
- Discipline-enforcing skills (TDD, verification requirements)
|
|
21
|
+
- Safety-critical practices
|
|
22
|
+
- Established best practices
|
|
23
|
+
|
|
24
|
+
**Example:**
|
|
25
|
+
```markdown
|
|
26
|
+
✅ Write code before test? Delete it. Start over. No exceptions.
|
|
27
|
+
❌ Consider writing tests first when feasible.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 2. Commitment
|
|
31
|
+
**What it is:** Consistency with prior actions, statements, or public declarations.
|
|
32
|
+
|
|
33
|
+
**How it works in skills:**
|
|
34
|
+
- Require announcements: "Announce skill usage"
|
|
35
|
+
- Force explicit choices: "Choose A, B, or C"
|
|
36
|
+
- Use tracking: TodoWrite for checklists
|
|
37
|
+
|
|
38
|
+
**When to use:**
|
|
39
|
+
- Ensuring skills are actually followed
|
|
40
|
+
- Multi-step processes
|
|
41
|
+
- Accountability mechanisms
|
|
42
|
+
|
|
43
|
+
**Example:**
|
|
44
|
+
```markdown
|
|
45
|
+
✅ When you find a skill, you MUST announce: "I'm using [Skill Name]"
|
|
46
|
+
❌ Consider letting your partner know which skill you're using.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. Scarcity
|
|
50
|
+
**What it is:** Urgency from time limits or limited availability.
|
|
51
|
+
|
|
52
|
+
**How it works in skills:**
|
|
53
|
+
- Time-bound requirements: "Before proceeding"
|
|
54
|
+
- Sequential dependencies: "Immediately after X"
|
|
55
|
+
- Prevents procrastination
|
|
56
|
+
|
|
57
|
+
**When to use:**
|
|
58
|
+
- Immediate verification requirements
|
|
59
|
+
- Time-sensitive workflows
|
|
60
|
+
- Preventing "I'll do it later"
|
|
61
|
+
|
|
62
|
+
**Example:**
|
|
63
|
+
```markdown
|
|
64
|
+
✅ After completing a task, IMMEDIATELY request code review before proceeding.
|
|
65
|
+
❌ You can review code when convenient.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 4. Social Proof
|
|
69
|
+
**What it is:** Conformity to what others do or what's considered normal.
|
|
70
|
+
|
|
71
|
+
**How it works in skills:**
|
|
72
|
+
- Universal patterns: "Every time", "Always"
|
|
73
|
+
- Failure modes: "X without Y = failure"
|
|
74
|
+
- Establishes norms
|
|
75
|
+
|
|
76
|
+
**When to use:**
|
|
77
|
+
- Documenting universal practices
|
|
78
|
+
- Warning about common failures
|
|
79
|
+
- Reinforcing standards
|
|
80
|
+
|
|
81
|
+
**Example:**
|
|
82
|
+
```markdown
|
|
83
|
+
✅ Checklists without TodoWrite tracking = steps get skipped. Every time.
|
|
84
|
+
❌ Some people find TodoWrite helpful for checklists.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 5. Unity
|
|
88
|
+
**What it is:** Shared identity, "we-ness", in-group belonging.
|
|
89
|
+
|
|
90
|
+
**How it works in skills:**
|
|
91
|
+
- Collaborative language: "our codebase", "we're colleagues"
|
|
92
|
+
- Shared goals: "we both want quality"
|
|
93
|
+
|
|
94
|
+
**When to use:**
|
|
95
|
+
- Collaborative workflows
|
|
96
|
+
- Establishing team culture
|
|
97
|
+
- Non-hierarchical practices
|
|
98
|
+
|
|
99
|
+
**Example:**
|
|
100
|
+
```markdown
|
|
101
|
+
✅ We're colleagues working together. I need your honest technical judgment.
|
|
102
|
+
❌ You should probably tell me if I'm wrong.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 6. Reciprocity
|
|
106
|
+
**What it is:** Obligation to return benefits received.
|
|
107
|
+
|
|
108
|
+
**How it works:**
|
|
109
|
+
- Use sparingly - can feel manipulative
|
|
110
|
+
- Rarely needed in skills
|
|
111
|
+
|
|
112
|
+
**When to avoid:**
|
|
113
|
+
- Almost always (other principles more effective)
|
|
114
|
+
|
|
115
|
+
### 7. Liking
|
|
116
|
+
**What it is:** Preference for cooperating with those we like.
|
|
117
|
+
|
|
118
|
+
**How it works:**
|
|
119
|
+
- **DON'T USE for compliance**
|
|
120
|
+
- Conflicts with honest feedback culture
|
|
121
|
+
- Creates sycophancy
|
|
122
|
+
|
|
123
|
+
**When to avoid:**
|
|
124
|
+
- Always for discipline enforcement
|
|
125
|
+
|
|
126
|
+
## Principle Combinations by Skill Type
|
|
127
|
+
|
|
128
|
+
| Skill Type | Use | Avoid |
|
|
129
|
+
|------------|-----|-------|
|
|
130
|
+
| Discipline-enforcing | Authority + Commitment + Social Proof | Liking, Reciprocity |
|
|
131
|
+
| Guidance/technique | Moderate Authority + Unity | Heavy authority |
|
|
132
|
+
| Collaborative | Unity + Commitment | Authority, Liking |
|
|
133
|
+
| Reference | Clarity only | All persuasion |
|
|
134
|
+
|
|
135
|
+
## Why This Works: The Psychology
|
|
136
|
+
|
|
137
|
+
**Bright-line rules reduce rationalization:**
|
|
138
|
+
- "YOU MUST" removes decision fatigue
|
|
139
|
+
- Absolute language eliminates "is this an exception?" questions
|
|
140
|
+
- Explicit anti-rationalization counters close specific loopholes
|
|
141
|
+
|
|
142
|
+
**Implementation intentions create automatic behavior:**
|
|
143
|
+
- Clear triggers + required actions = automatic execution
|
|
144
|
+
- "When X, do Y" more effective than "generally do Y"
|
|
145
|
+
- Reduces cognitive load on compliance
|
|
146
|
+
|
|
147
|
+
**LLMs are parahuman:**
|
|
148
|
+
- Trained on human text containing these patterns
|
|
149
|
+
- Authority language precedes compliance in training data
|
|
150
|
+
- Commitment sequences (statement → action) frequently modeled
|
|
151
|
+
- Social proof patterns (everyone does X) establish norms
|
|
152
|
+
|
|
153
|
+
## Ethical Use
|
|
154
|
+
|
|
155
|
+
**Legitimate:**
|
|
156
|
+
- Ensuring critical practices are followed
|
|
157
|
+
- Creating effective documentation
|
|
158
|
+
- Preventing predictable failures
|
|
159
|
+
|
|
160
|
+
**Illegitimate:**
|
|
161
|
+
- Manipulating for personal gain
|
|
162
|
+
- Creating false urgency
|
|
163
|
+
- Guilt-based compliance
|
|
164
|
+
|
|
165
|
+
**The test:** Would this technique serve the user's genuine interests if they fully understood it?
|
|
166
|
+
|
|
167
|
+
## Research Citations
|
|
168
|
+
|
|
169
|
+
**Cialdini, R. B. (2021).** *Influence: The Psychology of Persuasion (New and Expanded).* Harper Business.
|
|
170
|
+
- Seven principles of persuasion
|
|
171
|
+
- Empirical foundation for influence research
|
|
172
|
+
|
|
173
|
+
**Meincke, L., Shapiro, D., Duckworth, A. L., Mollick, E., Mollick, L., & Cialdini, R. (2025).** Call Me A Jerk: Persuading AI to Comply with Objectionable Requests. University of Pennsylvania.
|
|
174
|
+
- Tested 7 principles with N=28,000 LLM conversations
|
|
175
|
+
- Compliance increased 33% → 72% with persuasion techniques
|
|
176
|
+
- Authority, commitment, scarcity most effective
|
|
177
|
+
- Validates parahuman model of LLM behavior
|
|
178
|
+
|
|
179
|
+
## Quick Reference
|
|
180
|
+
|
|
181
|
+
When designing a skill, ask:
|
|
182
|
+
|
|
183
|
+
1. **What type is it?** (Discipline vs. guidance vs. reference)
|
|
184
|
+
2. **What behavior am I trying to change?**
|
|
185
|
+
3. **Which principle(s) apply?** (Usually authority + commitment for discipline)
|
|
186
|
+
4. **Am I combining too many?** (Don't use all seven)
|
|
187
|
+
5. **Is this ethical?** (Serves user's genuine interests?)
|