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.
- package/.claude-plugin/plugin.json +26 -0
- package/.cursor-plugin/plugin.json +26 -0
- package/LICENSE +21 -0
- package/README.md +791 -0
- package/SKILL.md +86 -0
- package/agents/debugger.md +102 -0
- package/agents/executor.md +115 -0
- package/agents/learnship-debugger.md +146 -0
- package/agents/learnship-executor.md +155 -0
- package/agents/learnship-phase-researcher.md +128 -0
- package/agents/learnship-plan-checker.md +119 -0
- package/agents/learnship-planner.md +146 -0
- package/agents/learnship-verifier.md +157 -0
- package/agents/planner.md +109 -0
- package/agents/researcher.md +80 -0
- package/agents/verifier.md +114 -0
- package/bin/install.js +1242 -0
- package/bin/learnship.js +56 -0
- package/commands/learnship/add-phase.md +22 -0
- package/commands/learnship/add-tests.md +24 -0
- package/commands/learnship/add-todo.md +21 -0
- package/commands/learnship/audit-milestone.md +21 -0
- package/commands/learnship/check-todos.md +22 -0
- package/commands/learnship/cleanup.md +22 -0
- package/commands/learnship/complete-milestone.md +22 -0
- package/commands/learnship/debug.md +27 -0
- package/commands/learnship/decision-log.md +22 -0
- package/commands/learnship/diagnose-issues.md +23 -0
- package/commands/learnship/discovery-phase.md +24 -0
- package/commands/learnship/discuss-milestone.md +23 -0
- package/commands/learnship/discuss-phase.md +23 -0
- package/commands/learnship/execute-phase.md +27 -0
- package/commands/learnship/execute-plan.md +26 -0
- package/commands/learnship/health.md +20 -0
- package/commands/learnship/help.md +19 -0
- package/commands/learnship/insert-phase.md +22 -0
- package/commands/learnship/knowledge-base.md +21 -0
- package/commands/learnship/list-phase-assumptions.md +21 -0
- package/commands/learnship/ls.md +20 -0
- package/commands/learnship/map-codebase.md +23 -0
- package/commands/learnship/milestone-retrospective.md +21 -0
- package/commands/learnship/new-milestone.md +23 -0
- package/commands/learnship/new-project.md +24 -0
- package/commands/learnship/next.md +22 -0
- package/commands/learnship/pause-work.md +21 -0
- package/commands/learnship/plan-milestone-gaps.md +22 -0
- package/commands/learnship/plan-phase.md +24 -0
- package/commands/learnship/progress.md +20 -0
- package/commands/learnship/quick.md +27 -0
- package/commands/learnship/reapply-patches.md +21 -0
- package/commands/learnship/release.md +21 -0
- package/commands/learnship/remove-phase.md +23 -0
- package/commands/learnship/research-phase.md +23 -0
- package/commands/learnship/resume-work.md +21 -0
- package/commands/learnship/set-profile.md +21 -0
- package/commands/learnship/settings.md +21 -0
- package/commands/learnship/transition.md +21 -0
- package/commands/learnship/update.md +21 -0
- package/commands/learnship/validate-phase.md +22 -0
- package/commands/learnship/verify-work.md +23 -0
- package/cursor-rules/learnship.mdc +60 -0
- package/gemini-extension.json +10 -0
- package/hooks/hooks-claude.json +15 -0
- package/hooks/hooks-cursor.json +10 -0
- package/hooks/session-start +43 -0
- package/install.sh +254 -0
- package/learnship/references/design-commands.md +119 -0
- package/learnship/references/git-integration.md +249 -0
- package/learnship/references/learning-design.md +142 -0
- package/learnship/references/model-profiles.md +90 -0
- package/learnship/references/planning-config.md +184 -0
- package/learnship/references/questioning.md +162 -0
- package/learnship/references/ui-brand.md +160 -0
- package/learnship/references/verification-patterns.md +608 -0
- package/learnship/templates/agents.md +166 -0
- package/learnship/templates/context.md +72 -0
- package/learnship/templates/plan.md +202 -0
- package/learnship/templates/project.md +184 -0
- package/learnship/templates/requirements.md +231 -0
- package/learnship/templates/state.md +176 -0
- package/learnship/templates/uat.md +80 -0
- package/learnship/workflows/add-phase.md +84 -0
- package/learnship/workflows/add-tests.md +191 -0
- package/learnship/workflows/add-todo.md +108 -0
- package/learnship/workflows/audit-milestone.md +178 -0
- package/learnship/workflows/check-todos.md +138 -0
- package/learnship/workflows/cleanup.md +107 -0
- package/learnship/workflows/complete-milestone.md +191 -0
- package/learnship/workflows/debug.md +245 -0
- package/learnship/workflows/decision-log.md +131 -0
- package/learnship/workflows/diagnose-issues.md +145 -0
- package/learnship/workflows/discovery-phase.md +183 -0
- package/learnship/workflows/discuss-milestone.md +136 -0
- package/learnship/workflows/discuss-phase.md +244 -0
- package/learnship/workflows/execute-phase.md +345 -0
- package/learnship/workflows/execute-plan.md +149 -0
- package/learnship/workflows/health.md +171 -0
- package/learnship/workflows/help.md +153 -0
- package/learnship/workflows/insert-phase.md +106 -0
- package/learnship/workflows/knowledge-base.md +168 -0
- package/learnship/workflows/list-phase-assumptions.md +129 -0
- package/learnship/workflows/ls.md +145 -0
- package/learnship/workflows/map-codebase.md +142 -0
- package/learnship/workflows/milestone-retrospective.md +178 -0
- package/learnship/workflows/new-milestone.md +200 -0
- package/learnship/workflows/new-project.md +340 -0
- package/learnship/workflows/next.md +100 -0
- package/learnship/workflows/pause-work.md +122 -0
- package/learnship/workflows/plan-milestone-gaps.md +160 -0
- package/learnship/workflows/plan-phase.md +288 -0
- package/learnship/workflows/progress.md +118 -0
- package/learnship/workflows/quick.md +256 -0
- package/learnship/workflows/reapply-patches.md +130 -0
- package/learnship/workflows/release.md +217 -0
- package/learnship/workflows/remove-phase.md +128 -0
- package/learnship/workflows/research-phase.md +137 -0
- package/learnship/workflows/resume-work.md +162 -0
- package/learnship/workflows/set-profile.md +78 -0
- package/learnship/workflows/settings.md +204 -0
- package/learnship/workflows/sync-upstream-skills.md +269 -0
- package/learnship/workflows/transition.md +165 -0
- package/learnship/workflows/update.md +166 -0
- package/learnship/workflows/validate-phase.md +174 -0
- package/learnship/workflows/verify-work.md +264 -0
- package/package.json +62 -0
- package/references/design-commands.md +119 -0
- package/references/git-integration.md +249 -0
- package/references/learning-design.md +142 -0
- package/references/model-profiles.md +90 -0
- package/references/planning-config.md +184 -0
- package/references/questioning.md +162 -0
- package/references/ui-brand.md +160 -0
- package/references/verification-patterns.md +608 -0
- package/skills/agentic-learning/SKILL.md +373 -0
- package/skills/agentic-learning/references/either-or-format.md +161 -0
- package/skills/agentic-learning/references/learning-science.md +190 -0
- package/skills/agentic-learning/references/struggle-ladder.md +140 -0
- package/skills/impeccable/SKILL.md +125 -0
- package/skills/impeccable/adapt/SKILL.md +199 -0
- package/skills/impeccable/animate/SKILL.md +190 -0
- package/skills/impeccable/audit/SKILL.md +129 -0
- package/skills/impeccable/bolder/SKILL.md +132 -0
- package/skills/impeccable/clarify/SKILL.md +180 -0
- package/skills/impeccable/colorize/SKILL.md +158 -0
- package/skills/impeccable/critique/SKILL.md +118 -0
- package/skills/impeccable/delight/SKILL.md +317 -0
- package/skills/impeccable/distill/SKILL.md +137 -0
- package/skills/impeccable/extract/SKILL.md +95 -0
- package/skills/impeccable/frontend-design/SKILL.md +127 -0
- package/skills/impeccable/frontend-design/reference/color-and-contrast.md +132 -0
- package/skills/impeccable/frontend-design/reference/interaction-design.md +123 -0
- package/skills/impeccable/frontend-design/reference/motion-design.md +99 -0
- package/skills/impeccable/frontend-design/reference/responsive-design.md +114 -0
- package/skills/impeccable/frontend-design/reference/spatial-design.md +100 -0
- package/skills/impeccable/frontend-design/reference/typography.md +131 -0
- package/skills/impeccable/frontend-design/reference/ux-writing.md +107 -0
- package/skills/impeccable/harden/SKILL.md +358 -0
- package/skills/impeccable/normalize/SKILL.md +67 -0
- package/skills/impeccable/onboard/SKILL.md +243 -0
- package/skills/impeccable/optimize/SKILL.md +269 -0
- package/skills/impeccable/polish/SKILL.md +202 -0
- package/skills/impeccable/quieter/SKILL.md +118 -0
- package/skills/impeccable/teach-impeccable/SKILL.md +69 -0
- package/templates/agents.md +166 -0
- package/templates/config.json +22 -0
- package/templates/context.md +72 -0
- package/templates/plan.md +202 -0
- package/templates/project.md +184 -0
- package/templates/requirements.md +231 -0
- package/templates/state.md +176 -0
- 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>
|