@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.
- package/README.md +16 -0
- package/agents/creative-copywriter.md +212 -0
- package/agents/dario-amodei.md +135 -0
- package/agents/doc-simplifier.md +63 -0
- package/agents/kotlin-pro.md +433 -0
- package/agents/red-team.md +136 -0
- package/agents/sam-altman.md +121 -0
- package/agents/seo-manager.md +184 -0
- package/bin/skillkit.js +3 -0
- package/package.json +35 -0
- package/skills/adversarial-review/SKILL.md +219 -0
- package/skills/baby-education/SKILL.md +260 -0
- package/skills/baby-education/references/advanced-techniques.md +323 -0
- package/skills/baby-education/references/transformations.md +345 -0
- package/skills/been-there-done-that/SKILL.md +455 -0
- package/skills/been-there-done-that/references/analysis-patterns.md +162 -0
- package/skills/been-there-done-that/references/git-commands.md +132 -0
- package/skills/been-there-done-that/references/tree-insertion-logic.md +145 -0
- package/skills/coolhunter/SKILL.md +270 -0
- package/skills/coolhunter/assets/elicitation-methods.csv +51 -0
- package/skills/coolhunter/knowledge/elicitation-methods.md +312 -0
- package/skills/coolhunter/references/workflow-execution.md +238 -0
- package/skills/coolhunter/workflow-plan-coolhunter.md +232 -0
- package/skills/creative-copywriting/SKILL.md +324 -0
- package/skills/creative-copywriting/databases/README.md +60 -0
- package/skills/creative-copywriting/databases/carousel-structures.csv +16 -0
- package/skills/creative-copywriting/databases/emotional-arcs.csv +11 -0
- package/skills/creative-copywriting/databases/hook-formulas.csv +51 -0
- package/skills/creative-copywriting/databases/power-words.csv +201 -0
- package/skills/creative-copywriting/databases/psychological-triggers.csv +21 -0
- package/skills/creative-copywriting/databases/read-more-patterns.csv +26 -0
- package/skills/creative-copywriting/databases/swipe-triggers.csv +31 -0
- package/skills/creative-copywriting/references/carousel-psychology.md +223 -0
- package/skills/creative-copywriting/references/hook-anatomy.md +169 -0
- package/skills/creative-copywriting/references/power-word-science.md +134 -0
- package/skills/creative-copywriting/references/storytelling-frameworks.md +157 -0
- package/skills/diverse-content-gen/SKILL.md +201 -0
- package/skills/diverse-content-gen/references/advanced-techniques.md +320 -0
- package/skills/diverse-content-gen/references/research-findings.md +379 -0
- package/skills/diverse-content-gen/references/task-workflows.md +241 -0
- package/skills/diverse-content-gen/references/tool-integration.md +419 -0
- package/skills/diverse-content-gen/references/troubleshooting.md +426 -0
- package/skills/diverse-content-gen/references/vs-core-technique.md +240 -0
- package/skills/framework-critical-thinking/SKILL.md +220 -0
- package/skills/framework-critical-thinking/references/bias_detector.md +375 -0
- package/skills/framework-critical-thinking/references/fallback_handler.md +239 -0
- package/skills/framework-critical-thinking/references/memory_curator.md +161 -0
- package/skills/framework-critical-thinking/references/metacognitive_monitor.md +297 -0
- package/skills/framework-critical-thinking/references/producer_critic_orchestrator.md +333 -0
- package/skills/framework-critical-thinking/references/reasoning_router.md +235 -0
- package/skills/framework-critical-thinking/references/reasoning_validator.md +97 -0
- package/skills/framework-critical-thinking/references/reflection_trigger.md +78 -0
- package/skills/framework-critical-thinking/references/self_verification.md +388 -0
- package/skills/framework-critical-thinking/references/uncertainty_quantifier.md +207 -0
- package/skills/framework-initiative/SKILL.md +231 -0
- package/skills/framework-initiative/references/examples.md +150 -0
- package/skills/framework-initiative/references/impact-analysis.md +157 -0
- package/skills/framework-initiative/references/intent-patterns.md +145 -0
- package/skills/framework-initiative/references/star-framework.md +165 -0
- package/skills/humanize-docs/SKILL.md +203 -0
- package/skills/humanize-docs/references/advanced-techniques.md +13 -0
- package/skills/humanize-docs/references/core-transformations.md +368 -0
- package/skills/humanize-docs/references/detection-patterns.md +400 -0
- package/skills/humanize-docs/references/examples-gallery.md +374 -0
- package/skills/imagine/SKILL.md +190 -0
- package/skills/imagine/references/artstyle-corporate-memphis.md +625 -0
- package/skills/imagine/references/artstyle-crewdson-hyperrealism.md +295 -0
- package/skills/imagine/references/artstyle-iphone-social-media.md +426 -0
- package/skills/imagine/references/artstyle-sciencesaru.md +276 -0
- package/skills/pre-deploy-checklist/README.md +26 -0
- package/skills/pre-deploy-checklist/SKILL.md +153 -0
- package/skills/pre-deploy-checklist/references/checklist-categories.md +174 -0
- package/skills/pre-deploy-checklist/references/domain-prompts.md +216 -0
- package/skills/prompt-engineering/SKILL.md +209 -0
- package/skills/prompt-engineering/references/advanced-combinations.md +444 -0
- package/skills/prompt-engineering/references/chain-of-thought.md +140 -0
- package/skills/prompt-engineering/references/decision_matrix.md +220 -0
- package/skills/prompt-engineering/references/few-shot.md +346 -0
- package/skills/prompt-engineering/references/json-format.md +270 -0
- package/skills/prompt-engineering/references/natural-language.md +420 -0
- package/skills/prompt-engineering/references/pitfalls.md +365 -0
- package/skills/prompt-engineering/references/prompt-chaining.md +498 -0
- package/skills/prompt-engineering/references/react.md +108 -0
- package/skills/prompt-engineering/references/self-consistency.md +322 -0
- package/skills/prompt-engineering/references/tree-of-thoughts.md +386 -0
- package/skills/prompt-engineering/references/xml-format.md +220 -0
- package/skills/prompt-engineering/references/yaml-format.md +488 -0
- package/skills/prompt-engineering/references/zero-shot.md +74 -0
- package/skills/quick-spec/SKILL.md +280 -0
- package/skills/quick-spec/assets/tech-spec-template.md +74 -0
- package/skills/quick-spec/references/step-01-understand.md +189 -0
- package/skills/quick-spec/references/step-02-investigate.md +144 -0
- package/skills/quick-spec/references/step-03-generate.md +128 -0
- package/skills/quick-spec/references/step-04-review.md +173 -0
- package/skills/quick-spec/tests/test_scenarios.md +83 -0
- package/skills/quick-spec/tests/test_skill.py +136 -0
- package/skills/readme-expert/SKILL.md +538 -0
- package/skills/readme-expert/knowledge/INDEX.md +192 -0
- package/skills/readme-expert/knowledge/application/quality-standards.md +470 -0
- package/skills/readme-expert/knowledge/application/script-executor.md +604 -0
- package/skills/readme-expert/knowledge/application/template-library.md +822 -0
- package/skills/readme-expert/knowledge/foundation/codebase-scanner.md +361 -0
- package/skills/readme-expert/knowledge/foundation/validation-checklist.md +481 -0
- package/skills/red-teaming/SKILL.md +321 -0
- package/skills/red-teaming/references/ai-llm-redteam.md +517 -0
- package/skills/red-teaming/references/attack-techniques.md +410 -0
- package/skills/red-teaming/references/cybersecurity-redteam.md +383 -0
- package/skills/red-teaming/references/tools-frameworks.md +446 -0
- package/skills/releasing/.skillkit-mode +1 -0
- package/skills/releasing/SKILL.md +225 -0
- package/skills/releasing/references/version-detection.md +108 -0
- package/skills/screenwriter/SKILL.md +273 -0
- package/skills/screenwriter/references/advanced-techniques.md +216 -0
- package/skills/screenwriter/references/pipeline-integration.md +266 -0
- package/skills/skillkit/.claude-plugin/plugin.json +27 -0
- package/skills/skillkit/CHANGELOG.md +484 -0
- package/skills/skillkit/SKILL.md +511 -0
- package/skills/skillkit/commands/skillkit.md +6 -0
- package/skills/skillkit/commands/validate-plan.md +6 -0
- package/skills/skillkit/commands/verify.md +6 -0
- package/skills/skillkit/knowledge/INDEX.md +352 -0
- package/skills/skillkit/knowledge/application/09-case-studies.md +257 -0
- package/skills/skillkit/knowledge/application/10-technical-architecture.md +324 -0
- package/skills/skillkit/knowledge/application/11-adoption-strategy.md +267 -0
- package/skills/skillkit/knowledge/application/12-testing-and-validation.md +276 -0
- package/skills/skillkit/knowledge/application/13-competitive-landscape.md +198 -0
- package/skills/skillkit/knowledge/foundation/01-why-skills-exist.md +246 -0
- package/skills/skillkit/knowledge/foundation/02-skills-vs-subagents-comparison.md +312 -0
- package/skills/skillkit/knowledge/foundation/03-skills-vs-subagents-decision-tree.md +346 -0
- package/skills/skillkit/knowledge/foundation/04-hybrid-patterns.md +308 -0
- package/skills/skillkit/knowledge/foundation/05-token-economics.md +275 -0
- package/skills/skillkit/knowledge/foundation/06-platform-constraints.md +237 -0
- package/skills/skillkit/knowledge/foundation/07-security-concerns.md +322 -0
- package/skills/skillkit/knowledge/foundation/08-when-not-to-use-skills.md +270 -0
- package/skills/skillkit/knowledge/plugin-guide.md +614 -0
- package/skills/skillkit/knowledge/tools/14-validation-tools-guide.md +150 -0
- package/skills/skillkit/knowledge/tools/15-cost-tools-guide.md +157 -0
- package/skills/skillkit/knowledge/tools/16-security-tools-guide.md +122 -0
- package/skills/skillkit/knowledge/tools/17-pattern-tools-guide.md +161 -0
- package/skills/skillkit/knowledge/tools/18-decision-helper-guide.md +243 -0
- package/skills/skillkit/knowledge/tools/19-test-generator-guide.md +275 -0
- package/skills/skillkit/knowledge/tools/20-split-skill-guide.md +149 -0
- package/skills/skillkit/knowledge/tools/21-quality-scorer-guide.md +226 -0
- package/skills/skillkit/knowledge/tools/22-migration-helper-guide.md +356 -0
- package/skills/skillkit/knowledge/tools/23-subagent-creation-guide.md +448 -0
- package/skills/skillkit/knowledge/tools/24-behavioral-testing-guide.md +122 -0
- package/skills/skillkit/references/proposal-generation.md +982 -0
- package/skills/skillkit/references/rationalization-catalog.md +75 -0
- package/skills/skillkit/references/research-methodology.md +661 -0
- package/skills/skillkit/references/section-2-full-creation-workflow.md +452 -0
- package/skills/skillkit/references/section-3-validation-workflow-existing-skill.md +63 -0
- package/skills/skillkit/references/section-4-decision-workflow-skills-vs-subagents.md +64 -0
- package/skills/skillkit/references/section-5-migration-workflow-doc-to-skill.md +58 -0
- package/skills/skillkit/references/section-6-subagent-creation-workflow.md +499 -0
- package/skills/skillkit/references/section-7-knowledge-reference-map.md +72 -0
- package/skills/skillkit/scripts/decision_helper.py +799 -0
- package/skills/skillkit/scripts/init_skill.py +400 -0
- package/skills/skillkit/scripts/init_subagent.py +231 -0
- package/skills/skillkit/scripts/migration_helper.py +669 -0
- package/skills/skillkit/scripts/package_skill.py +211 -0
- package/skills/skillkit/scripts/pattern_detector.py +381 -0
- package/skills/skillkit/scripts/pattern_detector_new.py +382 -0
- package/skills/skillkit/scripts/pressure_tester.py +157 -0
- package/skills/skillkit/scripts/quality_scorer.py +999 -0
- package/skills/skillkit/scripts/quick_validate.py +100 -0
- package/skills/skillkit/scripts/security_scanner.py +474 -0
- package/skills/skillkit/scripts/split_skill.py +540 -0
- package/skills/skillkit/scripts/test_generator.py +695 -0
- package/skills/skillkit/scripts/token_estimator.py +493 -0
- package/skills/skillkit/scripts/utils/__init__.py +49 -0
- package/skills/skillkit/scripts/utils/budget_tracker.py +388 -0
- package/skills/skillkit/scripts/utils/output_formatter.py +263 -0
- package/skills/skillkit/scripts/utils/reference_validator.py +401 -0
- package/skills/skillkit/scripts/validate_skill.py +594 -0
- package/skills/skillkit/tests/test_behavioral.py +39 -0
- package/skills/skillkit/tests/test_scenarios.md +83 -0
- package/skills/skillkit/tests/test_skill.py +136 -0
- package/skills/social-media-seo/SKILL.md +278 -0
- package/skills/social-media-seo/databases/caption-styles.csv +31 -0
- package/skills/social-media-seo/databases/engagement-tactics.csv +16 -0
- package/skills/social-media-seo/databases/hashtag-strategies.csv +21 -0
- package/skills/social-media-seo/databases/hook-formulas.csv +26 -0
- package/skills/social-media-seo/databases/keyword-clusters.csv +11 -0
- package/skills/social-media-seo/databases/thread-structures.csv +26 -0
- package/skills/social-media-seo/databases/viral-patterns.csv +21 -0
- package/skills/social-media-seo/references/analytics-guide.md +321 -0
- package/skills/social-media-seo/references/instagram-seo.md +235 -0
- package/skills/social-media-seo/references/threads-seo.md +305 -0
- package/skills/social-media-seo/references/x-twitter-seo.md +337 -0
- package/skills/social-media-seo/scripts/query_database.py +191 -0
- package/skills/storyteller/SKILL.md +241 -0
- package/skills/storyteller/references/transformation-methodology.md +293 -0
- package/skills/storyteller/references/visual-vocabulary.md +177 -0
- package/skills/thread-pro/SKILL.md +162 -0
- package/skills/thread-pro/anti-ai-patterns.md +120 -0
- package/skills/thread-pro/hook-formulas.md +138 -0
- package/skills/thread-pro/references/anti-ai-patterns.md +120 -0
- package/skills/thread-pro/references/hook-formulas.md +138 -0
- package/skills/thread-pro/references/thread-structures.md +240 -0
- package/skills/thread-pro/references/voice-injection.md +130 -0
- package/skills/thread-pro/thread-structures.md +240 -0
- package/skills/thread-pro/voice-injection.md +130 -0
- package/skills/tinkering/SKILL.md +251 -0
- package/skills/tinkering/references/graduation-checklist.md +100 -0
- package/skills/validate-plan/.skillkit-mode +1 -0
- package/skills/validate-plan/SKILL.md +406 -0
- package/skills/validate-plan/references/dry-principles.md +251 -0
- package/skills/validate-plan/references/gap-analysis-guide.md +320 -0
- package/skills/validate-plan/references/tdd-patterns.md +413 -0
- package/skills/validate-plan/references/yagni-checklist.md +330 -0
- package/skills/verify-before-ship/.skillkit-mode +1 -0
- package/skills/verify-before-ship/SKILL.md +116 -0
- package/skills/verify-before-ship/references/anti-rationalization.md +212 -0
- package/skills/verify-before-ship/references/verification-gates.md +305 -0
- package/skills-manifest.json +217 -0
- package/src/banner.js +10 -0
- package/src/cli.js +30 -0
- package/src/install.js +53 -0
- package/src/install.test.js +40 -0
- package/src/picker.js +74 -0
- package/src/picker.test.js +21 -0
- package/src/scope.js +57 -0
- package/src/scope.test.js +19 -0
- package/src/update.js +34 -0
- 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.
|