@rfxlamia/skillkit 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 (225) hide show
  1. package/README.md +16 -0
  2. package/agents/creative-copywriter.md +212 -0
  3. package/agents/dario-amodei.md +135 -0
  4. package/agents/doc-simplifier.md +63 -0
  5. package/agents/kotlin-pro.md +433 -0
  6. package/agents/red-team.md +136 -0
  7. package/agents/sam-altman.md +121 -0
  8. package/agents/seo-manager.md +184 -0
  9. package/bin/skillkit.js +3 -0
  10. package/package.json +35 -0
  11. package/skills/adversarial-review/SKILL.md +219 -0
  12. package/skills/baby-education/SKILL.md +260 -0
  13. package/skills/baby-education/references/advanced-techniques.md +323 -0
  14. package/skills/baby-education/references/transformations.md +345 -0
  15. package/skills/been-there-done-that/SKILL.md +455 -0
  16. package/skills/been-there-done-that/references/analysis-patterns.md +162 -0
  17. package/skills/been-there-done-that/references/git-commands.md +132 -0
  18. package/skills/been-there-done-that/references/tree-insertion-logic.md +145 -0
  19. package/skills/coolhunter/SKILL.md +270 -0
  20. package/skills/coolhunter/assets/elicitation-methods.csv +51 -0
  21. package/skills/coolhunter/knowledge/elicitation-methods.md +312 -0
  22. package/skills/coolhunter/references/workflow-execution.md +238 -0
  23. package/skills/coolhunter/workflow-plan-coolhunter.md +232 -0
  24. package/skills/creative-copywriting/SKILL.md +324 -0
  25. package/skills/creative-copywriting/databases/README.md +60 -0
  26. package/skills/creative-copywriting/databases/carousel-structures.csv +16 -0
  27. package/skills/creative-copywriting/databases/emotional-arcs.csv +11 -0
  28. package/skills/creative-copywriting/databases/hook-formulas.csv +51 -0
  29. package/skills/creative-copywriting/databases/power-words.csv +201 -0
  30. package/skills/creative-copywriting/databases/psychological-triggers.csv +21 -0
  31. package/skills/creative-copywriting/databases/read-more-patterns.csv +26 -0
  32. package/skills/creative-copywriting/databases/swipe-triggers.csv +31 -0
  33. package/skills/creative-copywriting/references/carousel-psychology.md +223 -0
  34. package/skills/creative-copywriting/references/hook-anatomy.md +169 -0
  35. package/skills/creative-copywriting/references/power-word-science.md +134 -0
  36. package/skills/creative-copywriting/references/storytelling-frameworks.md +157 -0
  37. package/skills/diverse-content-gen/SKILL.md +201 -0
  38. package/skills/diverse-content-gen/references/advanced-techniques.md +320 -0
  39. package/skills/diverse-content-gen/references/research-findings.md +379 -0
  40. package/skills/diverse-content-gen/references/task-workflows.md +241 -0
  41. package/skills/diverse-content-gen/references/tool-integration.md +419 -0
  42. package/skills/diverse-content-gen/references/troubleshooting.md +426 -0
  43. package/skills/diverse-content-gen/references/vs-core-technique.md +240 -0
  44. package/skills/framework-critical-thinking/SKILL.md +220 -0
  45. package/skills/framework-critical-thinking/references/bias_detector.md +375 -0
  46. package/skills/framework-critical-thinking/references/fallback_handler.md +239 -0
  47. package/skills/framework-critical-thinking/references/memory_curator.md +161 -0
  48. package/skills/framework-critical-thinking/references/metacognitive_monitor.md +297 -0
  49. package/skills/framework-critical-thinking/references/producer_critic_orchestrator.md +333 -0
  50. package/skills/framework-critical-thinking/references/reasoning_router.md +235 -0
  51. package/skills/framework-critical-thinking/references/reasoning_validator.md +97 -0
  52. package/skills/framework-critical-thinking/references/reflection_trigger.md +78 -0
  53. package/skills/framework-critical-thinking/references/self_verification.md +388 -0
  54. package/skills/framework-critical-thinking/references/uncertainty_quantifier.md +207 -0
  55. package/skills/framework-initiative/SKILL.md +231 -0
  56. package/skills/framework-initiative/references/examples.md +150 -0
  57. package/skills/framework-initiative/references/impact-analysis.md +157 -0
  58. package/skills/framework-initiative/references/intent-patterns.md +145 -0
  59. package/skills/framework-initiative/references/star-framework.md +165 -0
  60. package/skills/humanize-docs/SKILL.md +203 -0
  61. package/skills/humanize-docs/references/advanced-techniques.md +13 -0
  62. package/skills/humanize-docs/references/core-transformations.md +368 -0
  63. package/skills/humanize-docs/references/detection-patterns.md +400 -0
  64. package/skills/humanize-docs/references/examples-gallery.md +374 -0
  65. package/skills/imagine/SKILL.md +190 -0
  66. package/skills/imagine/references/artstyle-corporate-memphis.md +625 -0
  67. package/skills/imagine/references/artstyle-crewdson-hyperrealism.md +295 -0
  68. package/skills/imagine/references/artstyle-iphone-social-media.md +426 -0
  69. package/skills/imagine/references/artstyle-sciencesaru.md +276 -0
  70. package/skills/pre-deploy-checklist/README.md +26 -0
  71. package/skills/pre-deploy-checklist/SKILL.md +153 -0
  72. package/skills/pre-deploy-checklist/references/checklist-categories.md +174 -0
  73. package/skills/pre-deploy-checklist/references/domain-prompts.md +216 -0
  74. package/skills/prompt-engineering/SKILL.md +209 -0
  75. package/skills/prompt-engineering/references/advanced-combinations.md +444 -0
  76. package/skills/prompt-engineering/references/chain-of-thought.md +140 -0
  77. package/skills/prompt-engineering/references/decision_matrix.md +220 -0
  78. package/skills/prompt-engineering/references/few-shot.md +346 -0
  79. package/skills/prompt-engineering/references/json-format.md +270 -0
  80. package/skills/prompt-engineering/references/natural-language.md +420 -0
  81. package/skills/prompt-engineering/references/pitfalls.md +365 -0
  82. package/skills/prompt-engineering/references/prompt-chaining.md +498 -0
  83. package/skills/prompt-engineering/references/react.md +108 -0
  84. package/skills/prompt-engineering/references/self-consistency.md +322 -0
  85. package/skills/prompt-engineering/references/tree-of-thoughts.md +386 -0
  86. package/skills/prompt-engineering/references/xml-format.md +220 -0
  87. package/skills/prompt-engineering/references/yaml-format.md +488 -0
  88. package/skills/prompt-engineering/references/zero-shot.md +74 -0
  89. package/skills/quick-spec/SKILL.md +280 -0
  90. package/skills/quick-spec/assets/tech-spec-template.md +74 -0
  91. package/skills/quick-spec/references/step-01-understand.md +189 -0
  92. package/skills/quick-spec/references/step-02-investigate.md +144 -0
  93. package/skills/quick-spec/references/step-03-generate.md +128 -0
  94. package/skills/quick-spec/references/step-04-review.md +173 -0
  95. package/skills/quick-spec/tests/test_scenarios.md +83 -0
  96. package/skills/quick-spec/tests/test_skill.py +136 -0
  97. package/skills/readme-expert/SKILL.md +538 -0
  98. package/skills/readme-expert/knowledge/INDEX.md +192 -0
  99. package/skills/readme-expert/knowledge/application/quality-standards.md +470 -0
  100. package/skills/readme-expert/knowledge/application/script-executor.md +604 -0
  101. package/skills/readme-expert/knowledge/application/template-library.md +822 -0
  102. package/skills/readme-expert/knowledge/foundation/codebase-scanner.md +361 -0
  103. package/skills/readme-expert/knowledge/foundation/validation-checklist.md +481 -0
  104. package/skills/red-teaming/SKILL.md +321 -0
  105. package/skills/red-teaming/references/ai-llm-redteam.md +517 -0
  106. package/skills/red-teaming/references/attack-techniques.md +410 -0
  107. package/skills/red-teaming/references/cybersecurity-redteam.md +383 -0
  108. package/skills/red-teaming/references/tools-frameworks.md +446 -0
  109. package/skills/releasing/.skillkit-mode +1 -0
  110. package/skills/releasing/SKILL.md +225 -0
  111. package/skills/releasing/references/version-detection.md +108 -0
  112. package/skills/screenwriter/SKILL.md +273 -0
  113. package/skills/screenwriter/references/advanced-techniques.md +216 -0
  114. package/skills/screenwriter/references/pipeline-integration.md +266 -0
  115. package/skills/skillkit/.claude-plugin/plugin.json +27 -0
  116. package/skills/skillkit/CHANGELOG.md +484 -0
  117. package/skills/skillkit/SKILL.md +511 -0
  118. package/skills/skillkit/commands/skillkit.md +6 -0
  119. package/skills/skillkit/commands/validate-plan.md +6 -0
  120. package/skills/skillkit/commands/verify.md +6 -0
  121. package/skills/skillkit/knowledge/INDEX.md +352 -0
  122. package/skills/skillkit/knowledge/application/09-case-studies.md +257 -0
  123. package/skills/skillkit/knowledge/application/10-technical-architecture.md +324 -0
  124. package/skills/skillkit/knowledge/application/11-adoption-strategy.md +267 -0
  125. package/skills/skillkit/knowledge/application/12-testing-and-validation.md +276 -0
  126. package/skills/skillkit/knowledge/application/13-competitive-landscape.md +198 -0
  127. package/skills/skillkit/knowledge/foundation/01-why-skills-exist.md +246 -0
  128. package/skills/skillkit/knowledge/foundation/02-skills-vs-subagents-comparison.md +312 -0
  129. package/skills/skillkit/knowledge/foundation/03-skills-vs-subagents-decision-tree.md +346 -0
  130. package/skills/skillkit/knowledge/foundation/04-hybrid-patterns.md +308 -0
  131. package/skills/skillkit/knowledge/foundation/05-token-economics.md +275 -0
  132. package/skills/skillkit/knowledge/foundation/06-platform-constraints.md +237 -0
  133. package/skills/skillkit/knowledge/foundation/07-security-concerns.md +322 -0
  134. package/skills/skillkit/knowledge/foundation/08-when-not-to-use-skills.md +270 -0
  135. package/skills/skillkit/knowledge/plugin-guide.md +614 -0
  136. package/skills/skillkit/knowledge/tools/14-validation-tools-guide.md +150 -0
  137. package/skills/skillkit/knowledge/tools/15-cost-tools-guide.md +157 -0
  138. package/skills/skillkit/knowledge/tools/16-security-tools-guide.md +122 -0
  139. package/skills/skillkit/knowledge/tools/17-pattern-tools-guide.md +161 -0
  140. package/skills/skillkit/knowledge/tools/18-decision-helper-guide.md +243 -0
  141. package/skills/skillkit/knowledge/tools/19-test-generator-guide.md +275 -0
  142. package/skills/skillkit/knowledge/tools/20-split-skill-guide.md +149 -0
  143. package/skills/skillkit/knowledge/tools/21-quality-scorer-guide.md +226 -0
  144. package/skills/skillkit/knowledge/tools/22-migration-helper-guide.md +356 -0
  145. package/skills/skillkit/knowledge/tools/23-subagent-creation-guide.md +448 -0
  146. package/skills/skillkit/knowledge/tools/24-behavioral-testing-guide.md +122 -0
  147. package/skills/skillkit/references/proposal-generation.md +982 -0
  148. package/skills/skillkit/references/rationalization-catalog.md +75 -0
  149. package/skills/skillkit/references/research-methodology.md +661 -0
  150. package/skills/skillkit/references/section-2-full-creation-workflow.md +452 -0
  151. package/skills/skillkit/references/section-3-validation-workflow-existing-skill.md +63 -0
  152. package/skills/skillkit/references/section-4-decision-workflow-skills-vs-subagents.md +64 -0
  153. package/skills/skillkit/references/section-5-migration-workflow-doc-to-skill.md +58 -0
  154. package/skills/skillkit/references/section-6-subagent-creation-workflow.md +499 -0
  155. package/skills/skillkit/references/section-7-knowledge-reference-map.md +72 -0
  156. package/skills/skillkit/scripts/decision_helper.py +799 -0
  157. package/skills/skillkit/scripts/init_skill.py +400 -0
  158. package/skills/skillkit/scripts/init_subagent.py +231 -0
  159. package/skills/skillkit/scripts/migration_helper.py +669 -0
  160. package/skills/skillkit/scripts/package_skill.py +211 -0
  161. package/skills/skillkit/scripts/pattern_detector.py +381 -0
  162. package/skills/skillkit/scripts/pattern_detector_new.py +382 -0
  163. package/skills/skillkit/scripts/pressure_tester.py +157 -0
  164. package/skills/skillkit/scripts/quality_scorer.py +999 -0
  165. package/skills/skillkit/scripts/quick_validate.py +100 -0
  166. package/skills/skillkit/scripts/security_scanner.py +474 -0
  167. package/skills/skillkit/scripts/split_skill.py +540 -0
  168. package/skills/skillkit/scripts/test_generator.py +695 -0
  169. package/skills/skillkit/scripts/token_estimator.py +493 -0
  170. package/skills/skillkit/scripts/utils/__init__.py +49 -0
  171. package/skills/skillkit/scripts/utils/budget_tracker.py +388 -0
  172. package/skills/skillkit/scripts/utils/output_formatter.py +263 -0
  173. package/skills/skillkit/scripts/utils/reference_validator.py +401 -0
  174. package/skills/skillkit/scripts/validate_skill.py +594 -0
  175. package/skills/skillkit/tests/test_behavioral.py +39 -0
  176. package/skills/skillkit/tests/test_scenarios.md +83 -0
  177. package/skills/skillkit/tests/test_skill.py +136 -0
  178. package/skills/social-media-seo/SKILL.md +278 -0
  179. package/skills/social-media-seo/databases/caption-styles.csv +31 -0
  180. package/skills/social-media-seo/databases/engagement-tactics.csv +16 -0
  181. package/skills/social-media-seo/databases/hashtag-strategies.csv +21 -0
  182. package/skills/social-media-seo/databases/hook-formulas.csv +26 -0
  183. package/skills/social-media-seo/databases/keyword-clusters.csv +11 -0
  184. package/skills/social-media-seo/databases/thread-structures.csv +26 -0
  185. package/skills/social-media-seo/databases/viral-patterns.csv +21 -0
  186. package/skills/social-media-seo/references/analytics-guide.md +321 -0
  187. package/skills/social-media-seo/references/instagram-seo.md +235 -0
  188. package/skills/social-media-seo/references/threads-seo.md +305 -0
  189. package/skills/social-media-seo/references/x-twitter-seo.md +337 -0
  190. package/skills/social-media-seo/scripts/query_database.py +191 -0
  191. package/skills/storyteller/SKILL.md +241 -0
  192. package/skills/storyteller/references/transformation-methodology.md +293 -0
  193. package/skills/storyteller/references/visual-vocabulary.md +177 -0
  194. package/skills/thread-pro/SKILL.md +162 -0
  195. package/skills/thread-pro/anti-ai-patterns.md +120 -0
  196. package/skills/thread-pro/hook-formulas.md +138 -0
  197. package/skills/thread-pro/references/anti-ai-patterns.md +120 -0
  198. package/skills/thread-pro/references/hook-formulas.md +138 -0
  199. package/skills/thread-pro/references/thread-structures.md +240 -0
  200. package/skills/thread-pro/references/voice-injection.md +130 -0
  201. package/skills/thread-pro/thread-structures.md +240 -0
  202. package/skills/thread-pro/voice-injection.md +130 -0
  203. package/skills/tinkering/SKILL.md +251 -0
  204. package/skills/tinkering/references/graduation-checklist.md +100 -0
  205. package/skills/validate-plan/.skillkit-mode +1 -0
  206. package/skills/validate-plan/SKILL.md +406 -0
  207. package/skills/validate-plan/references/dry-principles.md +251 -0
  208. package/skills/validate-plan/references/gap-analysis-guide.md +320 -0
  209. package/skills/validate-plan/references/tdd-patterns.md +413 -0
  210. package/skills/validate-plan/references/yagni-checklist.md +330 -0
  211. package/skills/verify-before-ship/.skillkit-mode +1 -0
  212. package/skills/verify-before-ship/SKILL.md +116 -0
  213. package/skills/verify-before-ship/references/anti-rationalization.md +212 -0
  214. package/skills/verify-before-ship/references/verification-gates.md +305 -0
  215. package/skills-manifest.json +217 -0
  216. package/src/banner.js +10 -0
  217. package/src/cli.js +30 -0
  218. package/src/install.js +53 -0
  219. package/src/install.test.js +40 -0
  220. package/src/picker.js +74 -0
  221. package/src/picker.test.js +21 -0
  222. package/src/scope.js +57 -0
  223. package/src/scope.test.js +19 -0
  224. package/src/update.js +34 -0
  225. package/src/update.test.js +24 -0
@@ -0,0 +1,455 @@
1
+ ---
2
+ name: been-there-done-that
3
+ description: >
4
+ Guides an agent to document developer progress objectively after completing
5
+ a sprint, project phase, or milestone. Reads a global markdown file,
6
+ detects git work sessions via 3-day gap analysis, writes factual entries
7
+ (no sycophancy, no praise), and performs cross-entry progression analysis
8
+ for portfolio and gig use.
9
+
10
+ USE WHEN: User says "document my progress", "log what I did", "I just finished
11
+ [sprint/project/phase]", "update btdt", or provides a repo path after completing work.
12
+
13
+ WORKFLOW: Pre-flight → Session Detection → Collection → Analysis → Write → Confirm
14
+
15
+ OUTPUT: Extends the user's global progress log (been-there-done-that.md) with a dated, factual entry
16
+ placed at the correct position in a Year/Month/Date/Project tree.
17
+ Default output language: English (ask user on first run if file is new).
18
+
19
+ CRITICAL: Agent MUST stop and wait at every STOP gate. Do not proceed without
20
+ explicit user confirmation. No assumptions. No skipping.
21
+ category: productivity
22
+ ---
23
+
24
+ # Been There Done That
25
+
26
+ ## Overview
27
+
28
+ This skill turns a finished sprint or project phase into a permanent, objective
29
+ record. It is not a celebration tool — it is a factual ledger of what was built,
30
+ what capability was gained, what blocked progress, and what shipped.
31
+
32
+ Entries are stored in a single global progress log file (named been-there-done-that.md by convention), organized
33
+ as a chronological tree. Over time, cross-entry analysis surfaces patterns:
34
+ recurring blockers, emerging domain depth, and portfolio-ready evidence statements.
35
+
36
+ ---
37
+
38
+ ## Workflow Decision Tree
39
+
40
+ ```
41
+ User triggers skill
42
+
43
+
44
+ [Pre-Flight Check] ──── missing info? ──→ STOP → ask user
45
+
46
+
47
+ [Phase 0: Session Detection]
48
+ - Run git log on repo
49
+ - Apply 3-day gap rule to find sessions
50
+ - Infer clean project name from repo/remote
51
+ ──── present sessions ──→ STOP-0 → user picks session + confirms name
52
+
53
+
54
+ [Phase 1: Auto-Draft + Confirm]
55
+ - Read: commit messages, git diff, changed files list
56
+ - Draft all 4 answers from git artifacts automatically
57
+ - MODE FIRST: show draft with verbose explanation
58
+ - MODE RETURNING: show draft with last entry as reference
59
+ ──── show draft for all 4 fields ──→ STOP-1 → user confirms or corrects
60
+
61
+
62
+ [Phase 2: Analysis] (skip if file has 0 entries)
63
+ - Compare new entry to existing entries
64
+ - Detect: new tech, recurring blockers, complexity escalation
65
+ ──── show brief analysis ──→ STOP-2 → user confirms accuracy
66
+
67
+
68
+ [Phase 3: Place & Write]
69
+ - Compute tree position from session.end date
70
+ - Generate entry (factual, no praise)
71
+ - Show preview
72
+ ──── show preview ──→ STOP-3 → user approves
73
+
74
+
75
+ [Phase 4: Done]
76
+ - Write/extend file at correct tree position
77
+ - Confirm success
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Pre-Flight Check
83
+
84
+ Run these checks before any git commands. STOP on each unresolved item.
85
+
86
+ **CHECK 1 — Repo path**
87
+ ```
88
+ Is a repo path provided OR is agent currently inside a git directory?
89
+ YES → use it
90
+ NO → ask: "Which repo did you just finish working on? Provide path."
91
+ → STOP until resolved.
92
+ ```
93
+
94
+ **CHECK 2 — Global file**
95
+ ```
96
+ BEFORE asking the user anything, search these locations in order:
97
+
98
+ LOOKUP SEQUENCE (stop at first match):
99
+ 1. Any path explicitly provided by user in current message
100
+ 2. $CLAUDE_BTDT_PATH environment variable (if set)
101
+ 3. ~/.claude/been-there-done-that.md ← primary default
102
+ 4. ~/been-there-done-that.md
103
+ 5. ~/Documents/been-there-done-that.md
104
+ 6. ~/notes/been-there-done-that.md
105
+ 7. <repo_path>/been-there-done-that.md
106
+
107
+ IF FOUND at any location:
108
+ → Read it immediately. Parse tree. Note last entry date.
109
+ → Do NOT ask user about file location. Continue to CHECK 3.
110
+
111
+ IF NOT FOUND anywhere:
112
+ → Ask once: "No been-there-done-that.md found.
113
+ Default location: ~/.claude/been-there-done-that.md
114
+ Press Enter to confirm, or type a different path."
115
+ → STOP until resolved.
116
+ ```
117
+
118
+ **CHECK 3 — Language (first-run only, if file does not exist)**
119
+ ```
120
+ Ask: "What language should entries be written in? (default: English)"
121
+ → Record answer. Do not ask again.
122
+ ```
123
+
124
+ ---
125
+
126
+ ## Phase 0: Session Detection
127
+
128
+ ### Extract git data
129
+
130
+ ```bash
131
+ # All commits: timestamp | hash | message (newest first)
132
+ git -C <repo_path> log --format="%at|%H|%s" 2>/dev/null
133
+
134
+ # Remote URL (for project name inference)
135
+ git -C <repo_path> remote get-url origin 2>/dev/null
136
+
137
+ # Current branch
138
+ git -C <repo_path> branch --show-current 2>/dev/null
139
+
140
+ # File change stats for selected session range
141
+ git -C <repo_path> diff --stat <oldest_hash>..<newest_hash> 2>/dev/null
142
+ ```
143
+
144
+ ### Apply 3-day gap rule
145
+
146
+ Parse timestamps. A **session boundary** exists when:
147
+ ```
148
+ gap between consecutive commits > 259200 seconds (3 days)
149
+ ```
150
+
151
+ For each session compute:
152
+ ```
153
+ session.id = sequential letter, OLDEST FIRST
154
+ A = oldest session, last letter = most recent session
155
+ session.start = earliest commit date in group (ISO 8601)
156
+ session.end = latest commit date in group
157
+ session.commits = count
158
+ session.messages = list of commit subjects (for context display)
159
+ ```
160
+
161
+ CRITICAL — label assignment:
162
+ git log outputs newest commits FIRST. Reverse the list before assigning letters.
163
+ A = chronologically first session (oldest work)
164
+ Last letter = most recent session (what user most likely just finished)
165
+ Always mark the most recent with "← most recent"
166
+
167
+ ### Infer project name
168
+
169
+ ```
170
+ 1. Take: folder name OR last path segment of git remote URL
171
+ 2. Strip prefixes: frontend- backend- api- service- mobile- web- app-
172
+ 3. Strip suffixes: -main -dev -staging -master -prod -v1 -v2 -branch
173
+ 4. Title-case remainder
174
+
175
+ Examples:
176
+ "frontend-fstrack-tractor-dev" → "FSTrack Tractor"
177
+ "yagura" → "Yagura"
178
+ "PT-GGF-internal-app-v2" → "Internal App" ← flag as ambiguous
179
+ ```
180
+
181
+ ### STOP-0 (Mandatory)
182
+
183
+ ```
184
+ 🔍 Repo detected: <raw_name>
185
+ 📁 File: <path> (exists with N entries | will be created)
186
+
187
+ Work sessions detected (oldest first):
188
+
189
+ [A] Nov 12 – Nov 15, 2025 (8 commits)
190
+ Commits: "initial setup", ...
191
+ [B] Jan 28 – Feb 20, 2026 (23 commits) ← most recent
192
+ Commits: "fix auth flow", "add realtime", ...
193
+
194
+ Which session did you just finish? (default: most recent = B) [A/B/...]
195
+ Project name → "<clean_name>" — confirm or type a new name:
196
+ ```
197
+
198
+ **→ STOP. Do not proceed until user responds.**
199
+
200
+ ---
201
+
202
+ ## Phase 1: Auto-Draft + Confirm
203
+
204
+ **Agent reads the repo first. Never ask blank questions.**
205
+
206
+ ### Step 1.1 — Read git artifacts for the selected session
207
+
208
+ ```bash
209
+ # Full diff stat for the session range
210
+ git -C <repo_path> diff --stat <session.oldest_hash>..<session.newest_hash> 2>/dev/null
211
+
212
+ # Commit messages in the session (oldest to newest)
213
+ git -C <repo_path> log --reverse --format="%s" <session.oldest_hash>^..<session.newest_hash> 2>/dev/null
214
+
215
+ # Files changed, for stack inference
216
+ git -C <repo_path> diff --name-only <session.oldest_hash>..<session.newest_hash> 2>/dev/null
217
+
218
+ # README or main entry file if present (cap at 100 lines)
219
+ head -100 <repo_path>/README.md 2>/dev/null
220
+ ```
221
+
222
+ ### Step 1.2 — Auto-draft all 4 fields
223
+
224
+ Using commit messages, diff stats, and file list — draft answers WITHOUT asking.
225
+
226
+ **Drafting rules per field:**
227
+
228
+ ```
229
+ FIELD 1 — WHAT WAS DONE:
230
+ Source: commit messages (group by theme) + diff stat summary
231
+ Pattern: "[verb] [system] — [scope detail]"
232
+ Example input: "feat: add WebSocket heartbeat", "fix: auth token refresh", "v2.1 release"
233
+ Example draft: "Implemented WebSocket heartbeat mechanism and auth token refresh.
234
+ Released v2.1 with multi-ecosystem scanning support."
235
+
236
+ FIELD 2 — NEW CAPABILITY:
237
+ Source: commit messages containing "feat:", "add", "implement", "first", "new", "support"
238
+ + file extensions not seen in prior entries (if file exists)
239
+ Draft the most technically specific "first time" action visible in the diff.
240
+ If nothing clearly new → draft: "[NEEDS INPUT] What capability did you gain?"
241
+
242
+ FIELD 3 — BLOCKED BY:
243
+ Source: commit messages containing "fix:", "workaround", "hotfix", "revert", "debug", "issue"
244
+ Also check: repeated fix commits targeting same file/module = likely pain point
245
+ If no fix/debug commits → draft: "None significant."
246
+
247
+ FIELD 4 — SHIPPED:
248
+ Source: commit messages containing "release", "deploy", "v[0-9]", "publish", "merge", "live"
249
+ Also check: tags in session range
250
+ git -C <repo_path> tag --sort=creatordate | tail -5
251
+ Draft: version tag + branch + any URL found in README
252
+ If nothing concrete → draft: "[NEEDS INPUT] What is the deliverable state?"
253
+ ```
254
+
255
+ ### Step 1.3 — Determine mode
256
+
257
+ ```
258
+ MODE FIRST → progress log does not exist OR has 0 entries
259
+ MODE RETURNING → progress log exists AND has ≥1 entry
260
+ ```
261
+
262
+ ### STOP-1 (Mandatory)
263
+
264
+ Present the auto-drafted entry for confirmation. Do NOT show empty fields.
265
+ Fields marked `[NEEDS INPUT]` must be filled by user before proceeding.
266
+
267
+ **Format:**
268
+
269
+ ```
270
+ 📋 Draft entry for <session.start> – <session.end> · <project_name>
271
+ Based on: <N> commits, <files_changed> files changed, branch: <branch>
272
+ [MODE RETURNING only: Last entry: <date> · <project> — <one-line summary>]
273
+
274
+ ── Draft ──────────────────────────────────────────────
275
+ Done:
276
+ <auto-drafted field 1>
277
+
278
+ New capability:
279
+ <auto-drafted field 2> [or: [NEEDS INPUT]]
280
+
281
+ Blocked by:
282
+ <auto-drafted field 3>
283
+
284
+ Shipped:
285
+ <auto-drafted field 4> [or: [NEEDS INPUT]]
286
+ ───────────────────────────────────────────────────────
287
+
288
+ Confirm, correct, or fill in [NEEDS INPUT] fields.
289
+ Type OK to confirm, or paste corrections:
290
+ ```
291
+
292
+ **→ STOP. Do not proceed until user responds with OK or corrections.**
293
+ If user provides corrections → update draft → proceed to Phase 2.
294
+ If any [NEEDS INPUT] fields remain unfilled → re-ask only those fields.
295
+
296
+ ---
297
+
298
+ ## Phase 2: Cross-Entry Analysis
299
+
300
+ **Skip this phase entirely if been-there-done-that.md has 0 prior entries.**
301
+
302
+ Read all existing entries and compare against the new entry.
303
+ Detect and surface only what the data actually supports. Do not invent patterns.
304
+
305
+ ```
306
+ DETECT:
307
+ a) New tech/tool not seen in any prior entry → "First time" flag
308
+ b) Same blocker appearing in ≥2 entries → "Recurring blocker" flag
309
+ c) Domain concentration (≥3 entries same area) → "Emerging depth" flag
310
+ d) Complexity change (compare scope over time)
311
+
312
+ GENERATE (only if data supports it):
313
+ 📊 Cross-entry note → factual observation, 1 line max
314
+ 🎯 Portfolio note → only if: solo delivery, production deployment,
315
+ or novel tech application. Never for routine work.
316
+ ```
317
+
318
+ **Rules — non-negotiable:**
319
+ - One `📊` note maximum per entry
320
+ - One `🎯` note maximum per entry
321
+ - If data doesn't clearly support a note → write nothing
322
+ - Never write praise. Never write encouragement. Never predict future growth.
323
+
324
+ ### STOP-2 (Mandatory)
325
+
326
+ ```
327
+ Analysis for this entry:
328
+
329
+ 📊 This is your 2nd entry involving real-time systems (prev: WooMaps tracking)
330
+ 🎯 Portfolio note: Solo delivery, production-deployed at yagura.space
331
+
332
+ Does this look accurate? [Y / edit / skip]
333
+ ```
334
+
335
+ **→ STOP. Do not proceed until user responds.**
336
+
337
+ ---
338
+
339
+ ## Phase 3: Place & Write
340
+
341
+ ### Compute tree position
342
+
343
+ Use `session.end` date as the anchor.
344
+
345
+ ```
346
+ Tree path: ## <YEAR> / ### <Month Name> / #### <YYYY-MM-DD> · <Project Name>
347
+
348
+ Tree order: ASCENDING (oldest at top of file, newest at bottom)
349
+ - Years: ascending (2024 above 2025 above 2026)
350
+ - Months: ascending within year (January above February)
351
+ - Dates: ascending within month (01 above 15 above 28)
352
+
353
+ If that exact date node exists → append BELOW existing same-date entry
354
+ If date is new → insert in ascending order within the month block
355
+ If month is new → insert in ascending order within the year block
356
+ If year is new → append new year block at END of file
357
+ ```
358
+
359
+ **New entries go toward the bottom of their section. The file grows downward.**
360
+
361
+ ### Entry format
362
+
363
+ ```markdown
364
+ #### <YYYY-MM-DD> · <Project Name>
365
+
366
+ **Session:** <start> – <end> · `<branch>` · <N> commits · <files_changed> files changed
367
+ **Stack:** <tech1>, <tech2>, ... (from answers + git diff)
368
+
369
+ **Done:**
370
+ <What was done — factual, specific, no adjectives of praise>
371
+
372
+ **New capability:**
373
+ <What user can do now — one concrete technical action, no vague learning>
374
+
375
+ **Blocked by:**
376
+ <Obstacles — factual. "None significant." if empty>
377
+
378
+ **Shipped:**
379
+ <Deliverable state — URL, branch, version, or status>
380
+
381
+ 📊 <cross-entry observation, if any>
382
+ 🎯 <portfolio note, if any>
383
+ ```
384
+
385
+ ### File structure
386
+
387
+ Tree is chronological ascending — oldest entries at the top, newest at the bottom.
388
+ Read top-to-bottom = read the history from start to now.
389
+
390
+ ```markdown
391
+ # Been There Done That
392
+
393
+ ## 2025
394
+ ### November
395
+ #### 2025-11-14 · FSTrack Tractor
396
+ ...
397
+
398
+ ## 2026
399
+ ### January
400
+ #### 2026-01-15 · WooMaps
401
+ ...
402
+
403
+ ### February
404
+ #### 2026-02-20 · Yagura
405
+ ...
406
+ ```
407
+
408
+ ### STOP-3 (Mandatory)
409
+
410
+ ```
411
+ Preview — entry to be written:
412
+
413
+ ────────────────────────────────────────
414
+ #### 2026-02-20 · Yagura
415
+ ...full entry...
416
+ ────────────────────────────────────────
417
+
418
+ Write this to <file_path>? [Y / edit]
419
+ ```
420
+
421
+ **→ STOP. Write ONLY after explicit Y.**
422
+
423
+ ---
424
+
425
+ ## Phase 4: Done
426
+
427
+ After writing:
428
+ 1. Print: `✓ Entry written to <file_path>`
429
+ 2. Show only the heading line added (date + project)
430
+ 3. Stop completely. No summary. No praise. No "what's next".
431
+
432
+ ---
433
+
434
+ ## Anti-Patterns (Hard Rules)
435
+
436
+ These must never appear in any output this skill produces:
437
+
438
+ | Forbidden | Correct approach |
439
+ |---|---|
440
+ | "You've grown so much" | omit entirely |
441
+ | "Impressive work" | omit entirely |
442
+ | "V completed work of 3 devs" | "Solo delivery of X involving Y and Z" |
443
+ | "Getting better at Rust" | "Third entry involving Rust async patterns" |
444
+ | "worked on backend stuff" | "Implemented SQLx connection pooling for concurrent sessions" |
445
+ | Future praise / encouragement | omit entirely |
446
+
447
+ The document is a ledger, not a trophy cabinet.
448
+
449
+ ---
450
+
451
+ ## Additional References
452
+
453
+ - [references/git-commands.md](references/git-commands.md) — full git command reference for session extraction
454
+ - [references/tree-insertion-logic.md](references/tree-insertion-logic.md) — algorithm for inserting entries at correct tree position
455
+ - [references/analysis-patterns.md](references/analysis-patterns.md) — cross-entry pattern detection rules and examples
@@ -0,0 +1,162 @@
1
+ # Cross-Entry Analysis Patterns
2
+
3
+ Rules for Phase 2. Applied only when been-there-done-that.md has ≥1 prior entry.
4
+ Goal: surface factual observations useful for portfolio positioning and self-tracking.
5
+ Strict rule: if data does not clearly support a pattern, write nothing.
6
+
7
+ ## Table of Contents
8
+ - [Pattern A — First Time Flag](#pattern-a--first-time-flag)
9
+ - [Pattern B — Recurring Blocker](#pattern-b--recurring-blocker)
10
+ - [Pattern C — Domain Depth](#pattern-c--domain-depth)
11
+ - [Pattern D — Portfolio Note](#pattern-d--portfolio-note)
12
+ - [Gig Positioning Statement](#gig-positioning-statement-optional-generated-on-request)
13
+ - [What Analysis Must NEVER Do](#what-analysis-must-never-do)
14
+
15
+ ---
16
+
17
+ ## Pattern A — First Time Flag
18
+
19
+ **Condition:** A technology, tool, or integration appears in the new entry's
20
+ Stack or answers, and does NOT appear in any prior entry.
21
+
22
+ **Output format:**
23
+ ```
24
+ 📊 First time working with <tech> (not in any prior entry)
25
+ ```
26
+
27
+ **Examples:**
28
+ ```
29
+ 📊 First time working with SQLx async (not in any prior entry)
30
+ 📊 First time deploying to production with custom domain (not in any prior entry)
31
+ ```
32
+
33
+ **Do NOT flag:**
34
+ - Generic terms: "backend", "frontend", "database"
35
+ - Languages user has used for years (if visible in multiple prior entries)
36
+ - Frameworks used in >1 prior entry
37
+
38
+ ---
39
+
40
+ ## Pattern B — Recurring Blocker
41
+
42
+ **Condition:** A blocker in the new entry is semantically similar to a blocker
43
+ in ≥1 prior entry.
44
+
45
+ **Similarity criteria (match any):**
46
+ - Same root cause category: auth flow, CORS, SSL/TLS, timeout, config management
47
+ - Same third-party system: Cloudflare, Supabase, Docker, specific API
48
+ - Same class of problem: "encrypted data I can't read", "proxy cuts connection"
49
+
50
+ **Output format:**
51
+ ```
52
+ 📊 Recurring blocker: <category> (also appeared in: <prior project, date>)
53
+ ```
54
+
55
+ **Examples:**
56
+ ```
57
+ 📊 Recurring blocker: Cloudflare proxy behavior (also in: WooMaps, 2025-11-14)
58
+ 📊 Recurring blocker: third-party encrypted data formats (also in: FSTrack, 2025-09-03)
59
+ ```
60
+
61
+ **Threshold:** Must appear in ≥2 entries total (prior + current). Not ≥2 prior.
62
+
63
+ ---
64
+
65
+ ## Pattern C — Domain Depth
66
+
67
+ **Condition:** ≥3 entries (including current) involve the same technical domain.
68
+
69
+ **Domain categories:**
70
+ ```
71
+ real-time systems → WebSocket, SSE, Supabase Realtime, MQTT, live tracking
72
+ IoT / telemetry → GPS, GNSS, tractor data, sensor parsing, Teltonika
73
+ authentication → JWT, OAuth, multi-tenant, RBAC, session management
74
+ agricultural systems → autosteer, field mapping, precision farming
75
+ team tooling → dashboards, task tracking, mandor systems
76
+ AI/agent systems → LLM integration, agent workflows, prompt engineering
77
+ Rust systems → Rust backend, async Rust, SQLx, Actix
78
+ ```
79
+
80
+ **Output format:**
81
+ ```
82
+ 📊 Emerging depth: <domain> (entries: <project1>, <project2>, <project3>)
83
+ ```
84
+
85
+ **Examples:**
86
+ ```
87
+ 📊 Emerging depth: real-time systems (entries: WooMaps, FSTrack, Yagura)
88
+ 📊 Emerging depth: Rust backend (entries: Centotype, Yagura, FSTrack)
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Pattern D — Portfolio Note
94
+
95
+ **Condition (ALL must be true):**
96
+ - The entry represents a complete, usable deliverable (not a WIP or internal experiment)
97
+ - AND at least one of:
98
+ - Production deployment (live URL, app store, server)
99
+ - Solo delivery (no team, user is sole developer)
100
+ - Novel technical integration (tech combination not commonly documented)
101
+
102
+ **Output format:**
103
+ ```
104
+ 🎯 Portfolio: <one factual sentence describing the deliverable>
105
+ ```
106
+
107
+ **Examples:**
108
+ ```
109
+ 🎯 Portfolio: Solo delivery — Yagura Phase 1 live at yagura.space (auth + realtime + calendar)
110
+ 🎯 Portfolio: Production GPS tracking system for agricultural mandors, handling concurrent sessions
111
+ 🎯 Portfolio: Open-source CLI (skillkit) with GitHub traction and external adoption
112
+ ```
113
+
114
+ **Do NOT generate portfolio note for:**
115
+ - Bug fixes only
116
+ - Config changes / dependency updates
117
+ - Internal tools not yet deployed
118
+ - Work that is clearly WIP ("started implementing", "began migrating")
119
+ - Any entry where the user said "Shipped: nothing yet"
120
+
121
+ ---
122
+
123
+ ## Gig Positioning Statement (Optional, generated on request)
124
+
125
+ If user asks "generate my portfolio summary" or "what's my positioning":
126
+
127
+ Scan ALL entries and produce:
128
+
129
+ ```
130
+ ## Developer Profile (from been-there-done-that)
131
+
132
+ **Stack fingerprint:** <top 5 technologies by frequency across entries>
133
+
134
+ **Delivery track record:**
135
+ - <N> production deployments documented
136
+ - <N> entries represent solo delivery
137
+ - <N> open-source projects
138
+
139
+ **Domain exposure:**
140
+ - <domain A>: <N> entries (<project list>)
141
+ - <domain B>: <N> entries (<project list>)
142
+
143
+ **Recurring strengths (by evidence):**
144
+ - <pattern observed in ≥3 entries, stated factually>
145
+
146
+ **Recurring friction:**
147
+ - <recurring blocker, if any>
148
+ ```
149
+
150
+ This is generated on explicit request only, not automatically on every write.
151
+
152
+ ---
153
+
154
+ ## What Analysis Must NEVER Do
155
+
156
+ - Predict: "You're becoming an expert in X" → forbidden
157
+ - Praise: "Great progress on Y" → forbidden
158
+ - Encourage: "Keep it up with Z" → forbidden
159
+ - Extrapolate: "Based on this trajectory..." → forbidden
160
+ - Quantify growth rate: "30% faster than last sprint" → forbidden (no baseline)
161
+
162
+ Analysis output is descriptive of the past. Never prescriptive about the future.