learnship 1.9.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 (171) hide show
  1. package/.claude-plugin/plugin.json +26 -0
  2. package/.cursor-plugin/plugin.json +26 -0
  3. package/LICENSE +21 -0
  4. package/README.md +791 -0
  5. package/SKILL.md +86 -0
  6. package/agents/debugger.md +102 -0
  7. package/agents/executor.md +115 -0
  8. package/agents/learnship-debugger.md +146 -0
  9. package/agents/learnship-executor.md +155 -0
  10. package/agents/learnship-phase-researcher.md +128 -0
  11. package/agents/learnship-plan-checker.md +119 -0
  12. package/agents/learnship-planner.md +146 -0
  13. package/agents/learnship-verifier.md +157 -0
  14. package/agents/planner.md +109 -0
  15. package/agents/researcher.md +80 -0
  16. package/agents/verifier.md +114 -0
  17. package/bin/install.js +1242 -0
  18. package/bin/learnship.js +56 -0
  19. package/commands/learnship/add-phase.md +22 -0
  20. package/commands/learnship/add-tests.md +24 -0
  21. package/commands/learnship/add-todo.md +21 -0
  22. package/commands/learnship/audit-milestone.md +21 -0
  23. package/commands/learnship/check-todos.md +22 -0
  24. package/commands/learnship/cleanup.md +22 -0
  25. package/commands/learnship/complete-milestone.md +22 -0
  26. package/commands/learnship/debug.md +27 -0
  27. package/commands/learnship/decision-log.md +22 -0
  28. package/commands/learnship/diagnose-issues.md +23 -0
  29. package/commands/learnship/discovery-phase.md +24 -0
  30. package/commands/learnship/discuss-milestone.md +23 -0
  31. package/commands/learnship/discuss-phase.md +23 -0
  32. package/commands/learnship/execute-phase.md +27 -0
  33. package/commands/learnship/execute-plan.md +26 -0
  34. package/commands/learnship/health.md +20 -0
  35. package/commands/learnship/help.md +19 -0
  36. package/commands/learnship/insert-phase.md +22 -0
  37. package/commands/learnship/knowledge-base.md +21 -0
  38. package/commands/learnship/list-phase-assumptions.md +21 -0
  39. package/commands/learnship/ls.md +20 -0
  40. package/commands/learnship/map-codebase.md +23 -0
  41. package/commands/learnship/milestone-retrospective.md +21 -0
  42. package/commands/learnship/new-milestone.md +23 -0
  43. package/commands/learnship/new-project.md +24 -0
  44. package/commands/learnship/next.md +22 -0
  45. package/commands/learnship/pause-work.md +21 -0
  46. package/commands/learnship/plan-milestone-gaps.md +22 -0
  47. package/commands/learnship/plan-phase.md +24 -0
  48. package/commands/learnship/progress.md +20 -0
  49. package/commands/learnship/quick.md +27 -0
  50. package/commands/learnship/reapply-patches.md +21 -0
  51. package/commands/learnship/release.md +21 -0
  52. package/commands/learnship/remove-phase.md +23 -0
  53. package/commands/learnship/research-phase.md +23 -0
  54. package/commands/learnship/resume-work.md +21 -0
  55. package/commands/learnship/set-profile.md +21 -0
  56. package/commands/learnship/settings.md +21 -0
  57. package/commands/learnship/transition.md +21 -0
  58. package/commands/learnship/update.md +21 -0
  59. package/commands/learnship/validate-phase.md +22 -0
  60. package/commands/learnship/verify-work.md +23 -0
  61. package/cursor-rules/learnship.mdc +60 -0
  62. package/gemini-extension.json +10 -0
  63. package/hooks/hooks-claude.json +15 -0
  64. package/hooks/hooks-cursor.json +10 -0
  65. package/hooks/session-start +43 -0
  66. package/install.sh +254 -0
  67. package/learnship/references/design-commands.md +119 -0
  68. package/learnship/references/git-integration.md +249 -0
  69. package/learnship/references/learning-design.md +142 -0
  70. package/learnship/references/model-profiles.md +90 -0
  71. package/learnship/references/planning-config.md +184 -0
  72. package/learnship/references/questioning.md +162 -0
  73. package/learnship/references/ui-brand.md +160 -0
  74. package/learnship/references/verification-patterns.md +608 -0
  75. package/learnship/templates/agents.md +166 -0
  76. package/learnship/templates/context.md +72 -0
  77. package/learnship/templates/plan.md +202 -0
  78. package/learnship/templates/project.md +184 -0
  79. package/learnship/templates/requirements.md +231 -0
  80. package/learnship/templates/state.md +176 -0
  81. package/learnship/templates/uat.md +80 -0
  82. package/learnship/workflows/add-phase.md +84 -0
  83. package/learnship/workflows/add-tests.md +191 -0
  84. package/learnship/workflows/add-todo.md +108 -0
  85. package/learnship/workflows/audit-milestone.md +178 -0
  86. package/learnship/workflows/check-todos.md +138 -0
  87. package/learnship/workflows/cleanup.md +107 -0
  88. package/learnship/workflows/complete-milestone.md +191 -0
  89. package/learnship/workflows/debug.md +245 -0
  90. package/learnship/workflows/decision-log.md +131 -0
  91. package/learnship/workflows/diagnose-issues.md +145 -0
  92. package/learnship/workflows/discovery-phase.md +183 -0
  93. package/learnship/workflows/discuss-milestone.md +136 -0
  94. package/learnship/workflows/discuss-phase.md +244 -0
  95. package/learnship/workflows/execute-phase.md +345 -0
  96. package/learnship/workflows/execute-plan.md +149 -0
  97. package/learnship/workflows/health.md +171 -0
  98. package/learnship/workflows/help.md +153 -0
  99. package/learnship/workflows/insert-phase.md +106 -0
  100. package/learnship/workflows/knowledge-base.md +168 -0
  101. package/learnship/workflows/list-phase-assumptions.md +129 -0
  102. package/learnship/workflows/ls.md +145 -0
  103. package/learnship/workflows/map-codebase.md +142 -0
  104. package/learnship/workflows/milestone-retrospective.md +178 -0
  105. package/learnship/workflows/new-milestone.md +200 -0
  106. package/learnship/workflows/new-project.md +340 -0
  107. package/learnship/workflows/next.md +100 -0
  108. package/learnship/workflows/pause-work.md +122 -0
  109. package/learnship/workflows/plan-milestone-gaps.md +160 -0
  110. package/learnship/workflows/plan-phase.md +288 -0
  111. package/learnship/workflows/progress.md +118 -0
  112. package/learnship/workflows/quick.md +256 -0
  113. package/learnship/workflows/reapply-patches.md +130 -0
  114. package/learnship/workflows/release.md +217 -0
  115. package/learnship/workflows/remove-phase.md +128 -0
  116. package/learnship/workflows/research-phase.md +137 -0
  117. package/learnship/workflows/resume-work.md +162 -0
  118. package/learnship/workflows/set-profile.md +78 -0
  119. package/learnship/workflows/settings.md +204 -0
  120. package/learnship/workflows/sync-upstream-skills.md +269 -0
  121. package/learnship/workflows/transition.md +165 -0
  122. package/learnship/workflows/update.md +166 -0
  123. package/learnship/workflows/validate-phase.md +174 -0
  124. package/learnship/workflows/verify-work.md +264 -0
  125. package/package.json +62 -0
  126. package/references/design-commands.md +119 -0
  127. package/references/git-integration.md +249 -0
  128. package/references/learning-design.md +142 -0
  129. package/references/model-profiles.md +90 -0
  130. package/references/planning-config.md +184 -0
  131. package/references/questioning.md +162 -0
  132. package/references/ui-brand.md +160 -0
  133. package/references/verification-patterns.md +608 -0
  134. package/skills/agentic-learning/SKILL.md +373 -0
  135. package/skills/agentic-learning/references/either-or-format.md +161 -0
  136. package/skills/agentic-learning/references/learning-science.md +190 -0
  137. package/skills/agentic-learning/references/struggle-ladder.md +140 -0
  138. package/skills/impeccable/SKILL.md +125 -0
  139. package/skills/impeccable/adapt/SKILL.md +199 -0
  140. package/skills/impeccable/animate/SKILL.md +190 -0
  141. package/skills/impeccable/audit/SKILL.md +129 -0
  142. package/skills/impeccable/bolder/SKILL.md +132 -0
  143. package/skills/impeccable/clarify/SKILL.md +180 -0
  144. package/skills/impeccable/colorize/SKILL.md +158 -0
  145. package/skills/impeccable/critique/SKILL.md +118 -0
  146. package/skills/impeccable/delight/SKILL.md +317 -0
  147. package/skills/impeccable/distill/SKILL.md +137 -0
  148. package/skills/impeccable/extract/SKILL.md +95 -0
  149. package/skills/impeccable/frontend-design/SKILL.md +127 -0
  150. package/skills/impeccable/frontend-design/reference/color-and-contrast.md +132 -0
  151. package/skills/impeccable/frontend-design/reference/interaction-design.md +123 -0
  152. package/skills/impeccable/frontend-design/reference/motion-design.md +99 -0
  153. package/skills/impeccable/frontend-design/reference/responsive-design.md +114 -0
  154. package/skills/impeccable/frontend-design/reference/spatial-design.md +100 -0
  155. package/skills/impeccable/frontend-design/reference/typography.md +131 -0
  156. package/skills/impeccable/frontend-design/reference/ux-writing.md +107 -0
  157. package/skills/impeccable/harden/SKILL.md +358 -0
  158. package/skills/impeccable/normalize/SKILL.md +67 -0
  159. package/skills/impeccable/onboard/SKILL.md +243 -0
  160. package/skills/impeccable/optimize/SKILL.md +269 -0
  161. package/skills/impeccable/polish/SKILL.md +202 -0
  162. package/skills/impeccable/quieter/SKILL.md +118 -0
  163. package/skills/impeccable/teach-impeccable/SKILL.md +69 -0
  164. package/templates/agents.md +166 -0
  165. package/templates/config.json +22 -0
  166. package/templates/context.md +72 -0
  167. package/templates/plan.md +202 -0
  168. package/templates/project.md +184 -0
  169. package/templates/requirements.md +231 -0
  170. package/templates/state.md +176 -0
  171. package/templates/uat.md +80 -0
package/install.sh ADDED
@@ -0,0 +1,254 @@
1
+ #!/usr/bin/env bash
2
+ # learnship — Installer
3
+ # Usage:
4
+ # bash install.sh # interactive
5
+ # bash install.sh --local # project install (non-interactive)
6
+ # bash install.sh --global # global install (non-interactive)
7
+ # bash install.sh --uninstall --local
8
+ # bash install.sh --uninstall --global
9
+
10
+ set -e
11
+
12
+ REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13
+ PLATFORM_NAME="learnship"
14
+
15
+ # Colors
16
+ RED='\033[0;31m'
17
+ GREEN='\033[0;32m'
18
+ YELLOW='\033[1;33m'
19
+ BLUE='\033[0;34m'
20
+ BOLD='\033[1m'
21
+ RESET='\033[0m'
22
+
23
+ # ─── Helpers ─────────────────────────────────────────────────────────────────
24
+
25
+ print_header() {
26
+ echo ""
27
+ echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
28
+ echo -e "${BOLD} ${PLATFORM_NAME}${RESET}"
29
+ echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
30
+ echo ""
31
+ }
32
+
33
+ print_success() { echo -e "${GREEN}✓${RESET} $1"; }
34
+ print_error() { echo -e "${RED}✗${RESET} $1" >&2; }
35
+ print_info() { echo -e "${BLUE}→${RESET} $1"; }
36
+ print_warn() { echo -e "${YELLOW}!${RESET} $1"; }
37
+
38
+ # ─── Argument Parsing ────────────────────────────────────────────────────────
39
+
40
+ SCOPE=""
41
+ UNINSTALL=false
42
+
43
+ for arg in "$@"; do
44
+ case "$arg" in
45
+ --local) SCOPE="local" ;;
46
+ --global) SCOPE="global" ;;
47
+ --uninstall) UNINSTALL=true ;;
48
+ --help|-h)
49
+ echo "Usage: bash install.sh [--local|--global] [--uninstall]"
50
+ echo ""
51
+ echo " --local Install to current project's .windsurf/ directory"
52
+ echo " --global Install to ~/.codeium/windsurf/ (available in all projects)"
53
+ echo " --uninstall Remove the installation"
54
+ echo ""
55
+ echo "Run without flags for interactive mode."
56
+ exit 0
57
+ ;;
58
+ *)
59
+ print_error "Unknown argument: $arg"
60
+ echo "Run 'bash install.sh --help' for usage."
61
+ exit 1
62
+ ;;
63
+ esac
64
+ done
65
+
66
+ # ─── Determine Target Directory ──────────────────────────────────────────────
67
+
68
+ get_target_dir() {
69
+ local scope="$1"
70
+ if [[ "$scope" == "global" ]]; then
71
+ echo "$HOME/.codeium/windsurf"
72
+ else
73
+ # When run via npx, pwd() is the npx cache — use LEARNSHIP_INSTALL_CWD
74
+ # (set by bin/learnship.js from INIT_CWD) to get the user's actual project dir
75
+ local project_dir="${LEARNSHIP_INSTALL_CWD:-$(pwd)}"
76
+ echo "${project_dir}/.windsurf"
77
+ fi
78
+ }
79
+
80
+ # ─── Interactive Prompt ──────────────────────────────────────────────────────
81
+
82
+ if [[ -z "$SCOPE" ]]; then
83
+ print_header
84
+
85
+ echo -e "${BOLD}Where would you like to install?${RESET}"
86
+ echo ""
87
+ echo " [1] Project — installs to ./.windsurf/ (current project only)"
88
+ echo " [2] Global — installs to ~/.codeium/windsurf/ (all Windsurf projects)"
89
+ echo ""
90
+ read -p "Choice [1/2]: " choice
91
+
92
+ case "$choice" in
93
+ 1|"") SCOPE="local" ;;
94
+ 2) SCOPE="global" ;;
95
+ *)
96
+ print_error "Invalid choice. Run again and enter 1 or 2."
97
+ exit 1
98
+ ;;
99
+ esac
100
+ fi
101
+
102
+ TARGET_DIR="$(get_target_dir "$SCOPE")"
103
+
104
+ # ─── Uninstall ───────────────────────────────────────────────────────────────
105
+
106
+ if [[ "$UNINSTALL" == true ]]; then
107
+ print_header
108
+ echo -e "Uninstalling from: ${BOLD}${TARGET_DIR}${RESET}"
109
+ echo ""
110
+
111
+ REMOVED=0
112
+
113
+ if [[ -d "${TARGET_DIR}/workflows" ]]; then
114
+ # Only remove our workflows (non-destructive: checks for our files)
115
+ for wf in new-project discuss-phase plan-phase execute-phase verify-work quick progress ls next pause-work resume-work complete-milestone; do
116
+ if [[ -f "${TARGET_DIR}/workflows/${wf}.md" ]]; then
117
+ rm "${TARGET_DIR}/workflows/${wf}.md"
118
+ print_info "Removed workflows/${wf}.md"
119
+ ((REMOVED++)) || true
120
+ fi
121
+ done
122
+ fi
123
+
124
+ if [[ -d "${TARGET_DIR}/skills/agentic-learning" ]]; then
125
+ rm -rf "${TARGET_DIR}/skills/agentic-learning"
126
+ print_info "Removed skills/agentic-learning/"
127
+ ((REMOVED++)) || true
128
+ fi
129
+
130
+ if [[ -d "${TARGET_DIR}/skills/impeccable" ]]; then
131
+ rm -rf "${TARGET_DIR}/skills/impeccable"
132
+ print_info "Removed skills/impeccable/"
133
+ ((REMOVED++)) || true
134
+ fi
135
+
136
+ if [[ -d "${TARGET_DIR}/skills/frontend-design" ]]; then
137
+ rm -rf "${TARGET_DIR}/skills/frontend-design"
138
+ print_info "Removed skills/frontend-design/ (legacy)"
139
+ ((REMOVED++)) || true
140
+ fi
141
+
142
+ if [[ $REMOVED -eq 0 ]]; then
143
+ print_warn "Nothing found to remove at ${TARGET_DIR}"
144
+ else
145
+ echo ""
146
+ print_success "Uninstall complete. Removed ${REMOVED} item(s)."
147
+ fi
148
+ exit 0
149
+ fi
150
+
151
+ # ─── Install ─────────────────────────────────────────────────────────────────
152
+
153
+ print_header
154
+ echo -e "Installing to: ${BOLD}${TARGET_DIR}${RESET}"
155
+ if [[ "$SCOPE" == "global" ]]; then
156
+ print_info "Global install — workflows and skills will be available in all Windsurf projects"
157
+ else
158
+ print_info "Project install — workflows and skills available in this project only"
159
+ fi
160
+ echo ""
161
+
162
+ # Validate source directory has the required files
163
+ if [[ ! -d "${REPO_DIR}/.windsurf/workflows" ]]; then
164
+ print_error "Source workflows not found at ${REPO_DIR}/.windsurf/workflows"
165
+ print_error "Make sure you are running install.sh from the agentic-development repo root."
166
+ exit 1
167
+ fi
168
+
169
+ # Create target directories
170
+ mkdir -p "${TARGET_DIR}/workflows"
171
+ mkdir -p "${TARGET_DIR}/skills"
172
+
173
+ # ── Install Workflows ──────────────────────────────────────────────────────
174
+
175
+ echo -e "${BOLD}Installing workflows...${RESET}"
176
+
177
+ WORKFLOW_COUNT=0
178
+ for wf_file in "${REPO_DIR}/.windsurf/workflows/"*.md; do
179
+ wf_name="$(basename "$wf_file")"
180
+ dest="${TARGET_DIR}/workflows/${wf_name}"
181
+ if [[ "$(realpath "$wf_file")" != "$(realpath "$dest" 2>/dev/null)" ]]; then
182
+ cp "$wf_file" "$dest"
183
+ print_success "workflows/${wf_name}"
184
+ ((WORKFLOW_COUNT++)) || true
185
+ fi
186
+ done
187
+
188
+ echo ""
189
+
190
+ # ── Install Skills ─────────────────────────────────────────────────────────
191
+
192
+ echo -e "${BOLD}Installing skills...${RESET}"
193
+
194
+ # agentic-learning
195
+ if [[ -d "${REPO_DIR}/.windsurf/skills/agentic-learning" ]]; then
196
+ mkdir -p "${TARGET_DIR}/skills/agentic-learning"
197
+ if [[ "$(realpath "${REPO_DIR}/.windsurf/skills/agentic-learning")" != "$(realpath "${TARGET_DIR}/skills/agentic-learning" 2>/dev/null)" ]]; then
198
+ cp -r "${REPO_DIR}/.windsurf/skills/agentic-learning/"* "${TARGET_DIR}/skills/agentic-learning/"
199
+ fi
200
+ print_success "skills/agentic-learning/ (learning partner)"
201
+ else
202
+ print_warn "skills/agentic-learning/ not found in source — skipping"
203
+ fi
204
+
205
+ # impeccable (full design skill suite)
206
+ if [[ -d "${REPO_DIR}/.windsurf/skills/impeccable" ]]; then
207
+ if [[ "$(realpath "${REPO_DIR}/.windsurf/skills/impeccable")" != "$(realpath "${TARGET_DIR}/skills/impeccable" 2>/dev/null)" ]]; then
208
+ cp -r "${REPO_DIR}/.windsurf/skills/impeccable" "${TARGET_DIR}/skills/impeccable"
209
+ fi
210
+ IMPECCABLE_COUNT=$(find "${REPO_DIR}/.windsurf/skills/impeccable" -name "SKILL.md" | wc -l | tr -d ' ')
211
+ print_success "skills/impeccable/ (${IMPECCABLE_COUNT} design skills — audit, critique, polish, colorize + more)"
212
+ else
213
+ print_warn "skills/impeccable/ not found in source — skipping"
214
+ fi
215
+
216
+ echo ""
217
+
218
+ # ── Done ──────────────────────────────────────────────────────────────────
219
+
220
+ echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
221
+ echo -e "${GREEN}${BOLD} Installation complete!${RESET}"
222
+ echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
223
+ echo ""
224
+ echo -e " ${BOLD}Installed:${RESET} ${WORKFLOW_COUNT} workflows + 2 skill suites (agentic-learning, impeccable)"
225
+ echo -e " ${BOLD}Location:${RESET} ${TARGET_DIR}"
226
+ echo ""
227
+
228
+ if [[ "$SCOPE" == "global" ]]; then
229
+ echo -e " ${BOLD}Next steps:${RESET}"
230
+ echo -e " • Restart Windsurf (or reload the window) to activate"
231
+ echo -e " • Open any project and type ${BOLD}/new-project${RESET} to start"
232
+ else
233
+ echo -e " ${BOLD}Next steps:${RESET}"
234
+ echo -e " • Workflows are immediately available in this project"
235
+ echo -e " • Type ${BOLD}/new-project${RESET} in Cascade to start"
236
+ fi
237
+
238
+ echo ""
239
+ echo -e " ${BOLD}Quick reference:${RESET}"
240
+ echo -e " /ls Where am I? What's next? (start every session here)"
241
+ echo -e " /next Auto-pilot — runs the right workflow automatically"
242
+ echo -e " /new-project Initialize a new project"
243
+ echo -e " /discuss-phase [N] Capture implementation decisions"
244
+ echo -e " /plan-phase [N] Create executable plans"
245
+ echo -e " /execute-phase [N] Run all plans in a phase"
246
+ echo -e " /verify-work [N] Manual acceptance testing"
247
+ echo -e " /quick [description] Ad-hoc task with full guarantees"
248
+ echo ""
249
+ echo -e " ${BOLD}Learning mode:${RESET} Set ${BOLD}learning_mode${RESET} in .planning/config.json"
250
+ echo -e " ${BOLD} auto${RESET} (default) Offered at workflow checkpoints"
251
+ echo -e " ${BOLD} manual${RESET} Only when you invoke @agentic-learning"
252
+ echo ""
253
+ echo -e " See ${BOLD}README.md${RESET} or ${BOLD}https://github.com/FavioVazquez/learnship${RESET} for full documentation."
254
+ echo ""
@@ -0,0 +1,119 @@
1
+ # Design Steering Commands
2
+
3
+ Steering commands for the frontend-design skill. Invoke these during any UI work to get targeted design guidance, critique, and improvements.
4
+
5
+ ---
6
+
7
+ ## Full Command Reference
8
+
9
+ | Command | What it triggers |
10
+ |---------|-----------------|
11
+ | `/audit` | Comprehensive UI quality audit against the full design checklist |
12
+ | `/critique` | Candid design critique — what's working, what isn't, specific improvements |
13
+ | `/polish` | Refine and elevate an existing interface — details, spacing, hierarchy |
14
+ | `/motion` | Add purposeful motion: entrances, transitions, state changes |
15
+ | `/tokens` | Design token system: color, spacing, typography scale, border radius |
16
+ | `/brand` | Brand coherence check across all surfaces |
17
+ | `/typography` | Typography system: scale, pairing, hierarchy, loading |
18
+ | `/color` | Color palette review: OKLCH, contrast ratios, dark mode, tinting |
19
+ | `/layout` | Layout and spatial rhythm: grid, breathing room, asymmetry |
20
+ | `/responsive` | Mobile-first: container queries, fluid design, breakpoints |
21
+ | `/interaction` | Interaction design: forms, focus states, loading patterns, optimistic UI |
22
+ | `/accessibility` | Accessibility: focus management, contrast, screen reader support |
23
+ | `/empty-states` | Empty state design that teaches the interface |
24
+ | `/loading` | Loading patterns: skeletons, spinners, progressive disclosure |
25
+ | `/forms` | Form UX: labels, validation, error states, field grouping |
26
+ | `/copy` | UX writing: labels, errors, empty states, CTAs |
27
+ | `/density` | Information density: when to compress, when to breathe |
28
+
29
+ ---
30
+
31
+ ## When to Use Each
32
+
33
+ ### Starting a new component or page
34
+ → `/audit` first — understand what quality problems to avoid before writing a line
35
+
36
+ ### After first implementation pass
37
+ → `/critique` — honest feedback before spending time on polish
38
+ → `/layout` — is the spatial rhythm right?
39
+
40
+ ### Typography feels off
41
+ → `/typography` — systematic review of scale, pairing, hierarchy
42
+ → `/copy` — are the words doing their job?
43
+
44
+ ### Colors feel wrong or generic
45
+ → `/color` — OKLCH-based palette review, tinting strategy, contrast
46
+ → `/tokens` — establish a proper design token system
47
+
48
+ ### Interface feels stiff or lifeless
49
+ → `/motion` — purposeful animation for state changes and entrances
50
+ → `/interaction` — does every interactive surface feel responsive?
51
+
52
+ ### Shipping to production
53
+ → `/accessibility` — focus, contrast ratios, screen reader support
54
+ → `/responsive` — does it adapt properly at all sizes?
55
+ → `/polish` — final refinement pass
56
+
57
+ ### Something feels "AI-generated"
58
+ → `/critique` — the AI slop test: would someone immediately recognize this as AI output?
59
+
60
+ ---
61
+
62
+ ## The Anti-Patterns to Watch For
63
+
64
+ The design skill actively guards against these common AI aesthetics:
65
+
66
+ **Colors:**
67
+ - Cyan-on-dark with purple-to-blue gradients
68
+ - Neon accents on dark backgrounds
69
+ - Pure black (#000) or pure white (#fff)
70
+ - Gray text on colored backgrounds
71
+
72
+ **Layout:**
73
+ - Everything in cards — not everything needs a container
74
+ - Nested cards inside cards
75
+ - Identical card grids (same-sized cards with icon + heading + text, repeated)
76
+ - Centering everything
77
+ - The "hero metric" template: big number, small label, gradient accent
78
+
79
+ **Typography:**
80
+ - Overused fonts: Inter, Roboto, Arial, Open Sans, system defaults
81
+ - Monospace as lazy "developer vibes"
82
+ - Large rounded icons above every heading
83
+
84
+ **Motion:**
85
+ - Bounce or elastic easing
86
+ - Animating layout properties (width, height, padding, margin)
87
+ - Scattered micro-interactions everywhere
88
+
89
+ **Details:**
90
+ - Glassmorphism used decoratively (not purposefully)
91
+ - Rounded elements with thick one-sided colored borders
92
+ - Generic rounded rectangles with drop shadows
93
+ - Gradient text for "impact" on metrics or headings
94
+
95
+ ---
96
+
97
+ ## The AI Slop Test
98
+
99
+ Before shipping any interface, ask:
100
+
101
+ > If you showed this to someone and said "AI made this" — would they believe you immediately?
102
+
103
+ If yes: use `/critique` to find what makes it look templated, then `/polish` to address it.
104
+
105
+ A well-designed interface makes someone ask **"how was this made?"** not "which AI made this?"
106
+
107
+ ---
108
+
109
+ ## Reference Files
110
+
111
+ The design skill includes 7 domain-specific reference files:
112
+
113
+ - `reference/typography.md` — scales, pairing, fluid sizing with clamp()
114
+ - `reference/color-and-contrast.md` — OKLCH, palettes, dark mode strategy
115
+ - `reference/spatial-design.md` — grids, rhythm, container queries
116
+ - `reference/motion-design.md` — timing, easing curves, reduced motion
117
+ - `reference/interaction-design.md` — forms, focus, loading patterns
118
+ - `reference/responsive-design.md` — mobile-first, fluid design, breakpoints
119
+ - `reference/ux-writing.md` — labels, errors, empty states, microcopy
@@ -0,0 +1,249 @@
1
+ <overview>
2
+ Git integration for learnship.
3
+ </overview>
4
+
5
+ <core_principle>
6
+
7
+ **Commit outcomes, not process.**
8
+
9
+ The git log should read like a changelog of what shipped, not a diary of planning activity.
10
+ </core_principle>
11
+
12
+ <commit_points>
13
+
14
+ | Event | Commit? | Why |
15
+ | ----------------------- | ------- | ------------------------------------------------ |
16
+ | BRIEF + ROADMAP created | YES | Project initialization |
17
+ | PLAN.md created | NO | Intermediate - commit with plan completion |
18
+ | RESEARCH.md created | NO | Intermediate |
19
+ | DISCOVERY.md created | NO | Intermediate |
20
+ | **Task completed** | YES | Atomic unit of work (1 commit per task) |
21
+ | **Plan completed** | YES | Metadata commit (SUMMARY + STATE + ROADMAP) |
22
+ | Handoff created | YES | WIP state preserved |
23
+
24
+ </commit_points>
25
+
26
+ <git_check>
27
+
28
+ ```bash
29
+ [ -d .git ] && echo "GIT_EXISTS" || echo "NO_GIT"
30
+ ```
31
+
32
+ If NO_GIT: Run `git init` silently. learnship projects always get their own repo.
33
+ </git_check>
34
+
35
+ <commit_formats>
36
+
37
+ <format name="initialization">
38
+ ## Project Initialization (brief + roadmap together)
39
+
40
+ ```
41
+ docs: initialize [project-name] ([N] phases)
42
+
43
+ [One-liner from PROJECT.md]
44
+
45
+ Phases:
46
+ 1. [phase-name]: [goal]
47
+ 2. [phase-name]: [goal]
48
+ 3. [phase-name]: [goal]
49
+ ```
50
+
51
+ What to commit:
52
+
53
+ ```bash
54
+ git add .planning/ && git commit -m "docs: initialize [project-name] ([N] phases)"
55
+ ```
56
+
57
+ </format>
58
+
59
+ <format name="task-completion">
60
+ ## Task Completion (During Plan Execution)
61
+
62
+ Each task gets its own commit immediately after completion.
63
+
64
+ ```
65
+ {type}({phase}-{plan}): {task-name}
66
+
67
+ - [Key change 1]
68
+ - [Key change 2]
69
+ - [Key change 3]
70
+ ```
71
+
72
+ **Commit types:**
73
+ - `feat` - New feature/functionality
74
+ - `fix` - Bug fix
75
+ - `test` - Test-only (TDD RED phase)
76
+ - `refactor` - Code cleanup (TDD REFACTOR phase)
77
+ - `perf` - Performance improvement
78
+ - `chore` - Dependencies, config, tooling
79
+
80
+ **Examples:**
81
+
82
+ ```bash
83
+ # Standard task
84
+ git add src/api/auth.ts src/types/user.ts
85
+ git commit -m "feat(08-02): create user registration endpoint
86
+
87
+ - POST /auth/register validates email and password
88
+ - Checks for duplicate users
89
+ - Returns JWT token on success
90
+ "
91
+
92
+ # TDD task - RED phase
93
+ git add src/__tests__/jwt.test.ts
94
+ git commit -m "test(07-02): add failing test for JWT generation
95
+
96
+ - Tests token contains user ID claim
97
+ - Tests token expires in 1 hour
98
+ - Tests signature verification
99
+ "
100
+
101
+ # TDD task - GREEN phase
102
+ git add src/utils/jwt.ts
103
+ git commit -m "feat(07-02): implement JWT generation
104
+
105
+ - Uses jose library for signing
106
+ - Includes user ID and expiry claims
107
+ - Signs with HS256 algorithm
108
+ "
109
+ ```
110
+
111
+ </format>
112
+
113
+ <format name="plan-completion">
114
+ ## Plan Completion (After All Tasks Done)
115
+
116
+ After all tasks committed, one final metadata commit captures plan completion.
117
+
118
+ ```
119
+ docs({phase}-{plan}): complete [plan-name] plan
120
+
121
+ Tasks completed: [N]/[N]
122
+ - [Task 1 name]
123
+ - [Task 2 name]
124
+ - [Task 3 name]
125
+
126
+ SUMMARY: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
127
+ ```
128
+
129
+ What to commit:
130
+
131
+ ```bash
132
+ git add .planning/phases/XX-name/{phase}-{plan}-PLAN.md .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md
133
+ git commit -m "docs({phase}-{plan}): complete [plan-name] plan"
134
+ ```
135
+
136
+ **Note:** Code files NOT included - already committed per-task.
137
+
138
+ </format>
139
+
140
+ <format name="handoff">
141
+ ## Handoff (WIP)
142
+
143
+ ```
144
+ wip: [phase-name] paused at task [X]/[Y]
145
+
146
+ Current: [task name]
147
+ [If blocked:] Blocked: [reason]
148
+ ```
149
+
150
+ What to commit:
151
+
152
+ ```bash
153
+ git add .planning/ && git commit -m "wip: [phase-name] paused at task [X]/[Y]"
154
+ ```
155
+
156
+ </format>
157
+ </commit_formats>
158
+
159
+ <example_log>
160
+
161
+ **Old approach (per-plan commits):**
162
+ ```
163
+ a7f2d1 feat(checkout): Stripe payments with webhook verification
164
+ 3e9c4b feat(products): catalog with search, filters, and pagination
165
+ 8a1b2c feat(auth): JWT with refresh rotation using jose
166
+ 5c3d7e feat(foundation): Next.js 15 + Prisma + Tailwind scaffold
167
+ 2f4a8d docs: initialize ecommerce-app (5 phases)
168
+ ```
169
+
170
+ **New approach (per-task commits):**
171
+ ```
172
+ # Phase 04 - Checkout
173
+ 1a2b3c docs(04-01): complete checkout flow plan
174
+ 4d5e6f feat(04-01): add webhook signature verification
175
+ 7g8h9i feat(04-01): implement payment session creation
176
+ 0j1k2l feat(04-01): create checkout page component
177
+
178
+ # Phase 03 - Products
179
+ 3m4n5o docs(03-02): complete product listing plan
180
+ 6p7q8r feat(03-02): add pagination controls
181
+ 9s0t1u feat(03-02): implement search and filters
182
+ 2v3w4x feat(03-01): create product catalog schema
183
+
184
+ # Phase 02 - Auth
185
+ 5y6z7a docs(02-02): complete token refresh plan
186
+ 8b9c0d feat(02-02): implement refresh token rotation
187
+ 1e2f3g test(02-02): add failing test for token refresh
188
+ 4h5i6j docs(02-01): complete JWT setup plan
189
+ 7k8l9m feat(02-01): add JWT generation and validation
190
+ 0n1o2p chore(02-01): install jose library
191
+
192
+ # Phase 01 - Foundation
193
+ 3q4r5s docs(01-01): complete scaffold plan
194
+ 6t7u8v feat(01-01): configure Tailwind and globals
195
+ 9w0x1y feat(01-01): set up Prisma with database
196
+ 2z3a4b feat(01-01): create Next.js 15 project
197
+
198
+ # Initialization
199
+ 5c6d7e docs: initialize ecommerce-app (5 phases)
200
+ ```
201
+
202
+ Each plan produces 2-4 commits (tasks + metadata). Clear, granular, bisectable.
203
+
204
+ </example_log>
205
+
206
+ <anti_patterns>
207
+
208
+ **Still don't commit (intermediate artifacts):**
209
+ - PLAN.md creation (commit with plan completion)
210
+ - RESEARCH.md (intermediate)
211
+ - DISCOVERY.md (intermediate)
212
+ - Minor planning tweaks
213
+ - "Fixed typo in roadmap"
214
+
215
+ **Do commit (outcomes):**
216
+ - Each task completion (feat/fix/test/refactor)
217
+ - Plan completion metadata (docs)
218
+ - Project initialization (docs)
219
+
220
+ **Key principle:** Commit working code and shipped outcomes, not planning process.
221
+
222
+ </anti_patterns>
223
+
224
+ <commit_strategy_rationale>
225
+
226
+ ## Why Per-Task Commits?
227
+
228
+ **Context engineering for AI:**
229
+ - Git history becomes primary context source for future Claude sessions
230
+ - `git log --grep="{phase}-{plan}"` shows all work for a plan
231
+ - `git diff <hash>^..<hash>` shows exact changes per task
232
+ - Less reliance on parsing SUMMARY.md = more context for actual work
233
+
234
+ **Failure recovery:**
235
+ - Task 1 committed ✅, Task 2 failed ❌
236
+ - Claude in next session: sees task 1 complete, can retry task 2
237
+ - Can `git reset --hard` to last successful task
238
+
239
+ **Debugging:**
240
+ - `git bisect` finds exact failing task, not just failing plan
241
+ - `git blame` traces line to specific task context
242
+ - Each commit is independently revertable
243
+
244
+ **Observability:**
245
+ - Solo developer + Claude workflow benefits from granular attribution
246
+ - Atomic commits are git best practice
247
+ - "Commit noise" irrelevant when consumer is Claude, not humans
248
+
249
+ </commit_strategy_rationale>