diff --git a/SKILL.md b/SKILL.md index 1a61ac96f4..8a8becab15 100644 --- a/SKILL.md +++ b/SKILL.md @@ -69,11 +69,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index 462cd9dc0c..388b921568 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -78,11 +78,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/benchmark-models/SKILL.md b/benchmark-models/SKILL.md index 5e5e6bd667..f89edfc256 100644 --- a/benchmark-models/SKILL.md +++ b/benchmark-models/SKILL.md @@ -71,11 +71,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/benchmark/SKILL.md b/benchmark/SKILL.md index 46934ba3df..b3bef41e09 100644 --- a/benchmark/SKILL.md +++ b/benchmark/SKILL.md @@ -71,11 +71,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/bin/gstack-config b/bin/gstack-config index 0cec75b6a5..d3c4b4e913 100755 --- a/bin/gstack-config +++ b/bin/gstack-config @@ -78,6 +78,12 @@ CONFIG_HEADER='# gstack configuration — edit freely, changes take effect on ne # gstack_contributor: false # true = file field reports when gstack misbehaves # skip_eng_review: false # true = skip eng review gate in /ship (not recommended) # +# ─── Learnings ──────────────────────────────────────────────────────── +# learnings_preamble_limit: 3 # How many learnings to load in preamble (every skill start) +# learnings_skill_limit: 10 # How many learnings to load inside skill workflows +# # Higher = more context for the model, more token cost. +# # Recommended: 3-10 for preamble, 10-30 for skill. +# # ─── Workspace-aware ship ──────────────────────────────────────────── # workspace_root: $HOME/conductor/workspaces # Where /ship looks for sibling # # Conductor worktrees when picking a VERSION slot. @@ -105,6 +111,8 @@ lookup_default() { skip_eng_review) echo "false" ;; workspace_root) echo "$HOME/conductor/workspaces" ;; cross_project_learnings) echo "" ;; # intentionally empty → unset triggers first-time prompt + learnings_preamble_limit) echo "3" ;; + learnings_skill_limit) echo "10" ;; artifacts_sync_mode) echo "off" ;; artifacts_sync_mode_prompted) echo "false" ;; *) echo "" ;; @@ -171,6 +179,7 @@ case "${1:-}" in for KEY in proactive routing_declined telemetry auto_upgrade update_check \ skill_prefix checkpoint_mode checkpoint_push codex_reviews \ gstack_contributor skip_eng_review workspace_root \ + learnings_preamble_limit learnings_skill_limit \ artifacts_sync_mode artifacts_sync_mode_prompted; do VALUE=$(grep -E "^${KEY}:" "$CONFIG_FILE" 2>/dev/null | tail -1 | awk '{print $2}' | tr -d '[:space:]' || true) SOURCE="default" @@ -187,6 +196,7 @@ case "${1:-}" in for KEY in proactive routing_declined telemetry auto_upgrade update_check \ skill_prefix checkpoint_mode checkpoint_push codex_reviews \ gstack_contributor skip_eng_review workspace_root \ + learnings_preamble_limit learnings_skill_limit \ artifacts_sync_mode artifacts_sync_mode_prompted; do printf ' %-24s %s\n' "$KEY:" "$(lookup_default "$KEY")" done diff --git a/browse/SKILL.md b/browse/SKILL.md index 1d544756c2..aa371b25d4 100644 --- a/browse/SKILL.md +++ b/browse/SKILL.md @@ -70,11 +70,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/canary/SKILL.md b/canary/SKILL.md index a211c386a4..e438b0c323 100644 --- a/canary/SKILL.md +++ b/canary/SKILL.md @@ -70,11 +70,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/codex/SKILL.md b/codex/SKILL.md index f6b507697f..294c53e9c1 100644 --- a/codex/SKILL.md +++ b/codex/SKILL.md @@ -72,11 +72,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/context-restore/SKILL.md b/context-restore/SKILL.md index 4f0cd70eb7..f600941a38 100644 --- a/context-restore/SKILL.md +++ b/context-restore/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/context-save/SKILL.md b/context-save/SKILL.md index b083b039ff..32be696639 100644 --- a/context-save/SKILL.md +++ b/context-save/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/cso/SKILL.md b/cso/SKILL.md index fe12df74e3..ab5f7b0a84 100644 --- a/cso/SKILL.md +++ b/cso/SKILL.md @@ -75,11 +75,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -836,12 +837,13 @@ This is NOT a checklist — it's a reasoning phase. The output is understanding, Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index ed4d3811bc..df98e20762 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -98,11 +98,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -928,12 +929,13 @@ If `DESIGN_NOT_AVAILABLE`: Phase 5 falls back to the HTML preview page (still go Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/design-html/SKILL.md b/design-html/SKILL.md index 2337af7210..3a8ed7b1ca 100644 --- a/design-html/SKILL.md +++ b/design-html/SKILL.md @@ -77,11 +77,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/design-review/SKILL.md b/design-review/SKILL.md index d17c076782..d6d0963aac 100644 --- a/design-review/SKILL.md +++ b/design-review/SKILL.md @@ -75,11 +75,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1075,12 +1076,13 @@ echo "REPORT_DIR: $REPORT_DIR" Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/design-shotgun/SKILL.md b/design-shotgun/SKILL.md index 2f8ac7abb0..040c84e394 100644 --- a/design-shotgun/SKILL.md +++ b/design-shotgun/SKILL.md @@ -92,11 +92,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/devex-review/SKILL.md b/devex-review/SKILL.md index fd8dbf908d..ae832ceb16 100644 --- a/devex-review/SKILL.md +++ b/devex-review/SKILL.md @@ -75,11 +75,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/document-generate/SKILL.md b/document-generate/SKILL.md index d9e0ddeb8c..c725d6bfb8 100644 --- a/document-generate/SKILL.md +++ b/document-generate/SKILL.md @@ -77,11 +77,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/document-release/SKILL.md b/document-release/SKILL.md index 24d48aaaaa..28bb9a2849 100644 --- a/document-release/SKILL.md +++ b/document-release/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/health/SKILL.md b/health/SKILL.md index b5471c0e8e..9089540b56 100644 --- a/health/SKILL.md +++ b/health/SKILL.md @@ -72,11 +72,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/investigate/SKILL.md b/investigate/SKILL.md index 9e2b23f0f7..c43cc58704 100644 --- a/investigate/SKILL.md +++ b/investigate/SKILL.md @@ -111,11 +111,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -820,12 +821,13 @@ Gather context before forming any hypothesis. Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --query "debug investigation root cause hypothesis bug fix" --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --query "debug investigation root cause hypothesis bug fix" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --query "debug investigation root cause hypothesis bug fix" 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --query "debug investigation root cause hypothesis bug fix" 2>/dev/null || true fi ``` diff --git a/land-and-deploy/SKILL.md b/land-and-deploy/SKILL.md index 1c19c98b05..07b7449ae7 100644 --- a/land-and-deploy/SKILL.md +++ b/land-and-deploy/SKILL.md @@ -69,11 +69,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/landing-report/SKILL.md b/landing-report/SKILL.md index e14817cfa1..2fbcc18192 100644 --- a/landing-report/SKILL.md +++ b/landing-report/SKILL.md @@ -70,11 +70,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/learn/SKILL.md b/learn/SKILL.md index 899ad42c1a..92f2ea2c24 100644 --- a/learn/SKILL.md +++ b/learn/SKILL.md @@ -72,11 +72,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/make-pdf/SKILL.md b/make-pdf/SKILL.md index 927b637d94..e8638eec6c 100644 --- a/make-pdf/SKILL.md +++ b/make-pdf/SKILL.md @@ -70,11 +70,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 6170f0e5fb..bea5f886e2 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -107,11 +107,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -868,12 +869,13 @@ eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/open-gstack-browser/SKILL.md b/open-gstack-browser/SKILL.md index b510d9d7b1..29545e1427 100644 --- a/open-gstack-browser/SKILL.md +++ b/open-gstack-browser/SKILL.md @@ -69,11 +69,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/pair-agent/SKILL.md b/pair-agent/SKILL.md index 8ddaf5e1ae..ab263d2f70 100644 --- a/pair-agent/SKILL.md +++ b/pair-agent/SKILL.md @@ -70,11 +70,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index 227db949b7..15abf4624f 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -101,11 +101,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1073,12 +1074,13 @@ Feed into the Premise Challenge (0A) and Dream State Mapping (0C). If you find a Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/plan-design-review/SKILL.md b/plan-design-review/SKILL.md index dc2f2136a1..eda974ef63 100644 --- a/plan-design-review/SKILL.md +++ b/plan-design-review/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1379,12 +1380,13 @@ descriptions of what 10/10 looks like. Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/plan-devex-review/SKILL.md b/plan-devex-review/SKILL.md index d1421a59a3..cf56ede40d 100644 --- a/plan-devex-review/SKILL.md +++ b/plan-devex-review/SKILL.md @@ -78,11 +78,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1350,12 +1351,13 @@ Pattern: Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/plan-eng-review/SKILL.md b/plan-eng-review/SKILL.md index 9ba4def395..4376b4f579 100644 --- a/plan-eng-review/SKILL.md +++ b/plan-eng-review/SKILL.md @@ -76,11 +76,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -926,12 +927,13 @@ Always work through the full interactive review: one section at a time (Architec Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/plan-tune/SKILL.md b/plan-tune/SKILL.md index 471fbe5170..f3dc749129 100644 --- a/plan-tune/SKILL.md +++ b/plan-tune/SKILL.md @@ -83,11 +83,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/qa-only/SKILL.md b/qa-only/SKILL.md index 77dcc4d23d..c9ae5ed882 100644 --- a/qa-only/SKILL.md +++ b/qa-only/SKILL.md @@ -71,11 +71,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -833,12 +834,13 @@ mkdir -p "$REPORT_DIR/screenshots" Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/qa/SKILL.md b/qa/SKILL.md index 0b56e53e2f..03f825d8d1 100644 --- a/qa/SKILL.md +++ b/qa/SKILL.md @@ -77,11 +77,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1065,12 +1066,13 @@ mkdir -p .gstack/qa-reports/screenshots Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --query "qa testing bug regression flake fixture" --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --query "qa testing bug regression flake fixture" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --query "qa testing bug regression flake fixture" 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --query "qa testing bug regression flake fixture" 2>/dev/null || true fi ``` diff --git a/retro/SKILL.md b/retro/SKILL.md index 2d2684afeb..84e72afdeb 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -89,11 +89,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -847,12 +848,13 @@ Usage: /retro [window | compare | global] Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/review/SKILL.md b/review/SKILL.md index 4d134d1751..c0838b2b62 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1126,12 +1127,13 @@ available (e.g., slop-scan not installed), skip this step silently. Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" 2>/dev/null || true fi ``` diff --git a/scrape/SKILL.md b/scrape/SKILL.md index b255abe085..5448f1bf8a 100644 --- a/scrape/SKILL.md +++ b/scrape/SKILL.md @@ -70,11 +70,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/scripts/resolvers/learnings.ts b/scripts/resolvers/learnings.ts index 8182251d04..99b5025057 100644 --- a/scripts/resolvers/learnings.ts +++ b/scripts/resolvers/learnings.ts @@ -41,7 +41,8 @@ export function generateLearningsSearch(ctx: TemplateContext, args?: string[]): Search for relevant learnings from previous sessions on this project: \`\`\`bash -$GSTACK_BIN/gstack-learnings-search --limit 10${queryFlag} 2>/dev/null || true +_LEARN_SKILL_LIMIT=$($GSTACK_BIN/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") +$GSTACK_BIN/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT"${queryFlag} 2>/dev/null || true \`\`\` If learnings are found, incorporate them into your analysis. When a review finding @@ -53,12 +54,13 @@ matches a past learning, note it: "Prior learning applied: [key] (confidence N, Search for relevant learnings from previous sessions: \`\`\`bash +_LEARN_SKILL_LIMIT=$(${ctx.paths.binDir}/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(${ctx.paths.binDir}/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ${ctx.paths.binDir}/gstack-learnings-search --limit 10${queryFlag} --cross-project 2>/dev/null || true + ${ctx.paths.binDir}/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT"${queryFlag} --cross-project 2>/dev/null || true else - ${ctx.paths.binDir}/gstack-learnings-search --limit 10${queryFlag} 2>/dev/null || true + ${ctx.paths.binDir}/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT"${queryFlag} 2>/dev/null || true fi \`\`\` diff --git a/scripts/resolvers/preamble/generate-preamble-bash.ts b/scripts/resolvers/preamble/generate-preamble-bash.ts index 18b6cca5d0..040fd9289c 100644 --- a/scripts/resolvers/preamble/generate-preamble-bash.ts +++ b/scripts/resolvers/preamble/generate-preamble-bash.ts @@ -61,11 +61,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(${ctx.paths.binDir}/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="\${GSTACK_HOME:-$HOME/.gstack}/projects/\${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(${ctx.paths.binDir}/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ${ctx.paths.binDir}/gstack-learnings-search --limit 3 2>/dev/null || true + ${ctx.paths.binDir}/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/setup-browser-cookies/SKILL.md b/setup-browser-cookies/SKILL.md index 4e46c0b255..da812851b2 100644 --- a/setup-browser-cookies/SKILL.md +++ b/setup-browser-cookies/SKILL.md @@ -67,11 +67,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/setup-deploy/SKILL.md b/setup-deploy/SKILL.md index 2731365c5e..3c7ea38ab2 100644 --- a/setup-deploy/SKILL.md +++ b/setup-deploy/SKILL.md @@ -73,11 +73,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/setup-gbrain/SKILL.md b/setup-gbrain/SKILL.md index c1abd775cc..222af94c4e 100644 --- a/setup-gbrain/SKILL.md +++ b/setup-gbrain/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/ship/SKILL.md b/ship/SKILL.md index 25119fb391..b6f4c8b46c 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -75,11 +75,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" @@ -1821,12 +1822,13 @@ Add a `## Verification Results` section to the PR body (Step 19): Search for relevant learnings from previous sessions: ```bash +_LEARN_SKILL_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_skill_limit 2>/dev/null || echo "10") _CROSS_PROJ=$(~/.claude/skills/gstack/bin/gstack-config get cross_project_learnings 2>/dev/null || echo "unset") echo "CROSS_PROJECT: $_CROSS_PROJ" if [ "$_CROSS_PROJ" = "true" ]; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --query "release ship version changelog merge pr" --cross-project 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --query "release ship version changelog merge pr" --cross-project 2>/dev/null || true else - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 10 --query "release ship version changelog merge pr" 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_SKILL_LIMIT" --query "release ship version changelog merge pr" 2>/dev/null || true fi ``` diff --git a/skillify/SKILL.md b/skillify/SKILL.md index 503f8262b2..267c48bc12 100644 --- a/skillify/SKILL.md +++ b/skillify/SKILL.md @@ -71,11 +71,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/sync-gbrain/SKILL.md b/sync-gbrain/SKILL.md index 8dba77386b..bc3f8cfcb8 100644 --- a/sync-gbrain/SKILL.md +++ b/sync-gbrain/SKILL.md @@ -74,11 +74,12 @@ for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null done eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true _LEARN_FILE="${GSTACK_HOME:-$HOME/.gstack}/projects/${SLUG:-unknown}/learnings.jsonl" +_LEARN_PREAMBLE_LIMIT=$(~/.claude/skills/gstack/bin/gstack-config get learnings_preamble_limit 2>/dev/null || echo "3") if [ -f "$_LEARN_FILE" ]; then _LEARN_COUNT=$(wc -l < "$_LEARN_FILE" 2>/dev/null | tr -d ' ') echo "LEARNINGS: $_LEARN_COUNT entries loaded" if [ "$_LEARN_COUNT" -gt 5 ] 2>/dev/null; then - ~/.claude/skills/gstack/bin/gstack-learnings-search --limit 3 2>/dev/null || true + ~/.claude/skills/gstack/bin/gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT" 2>/dev/null || true fi else echo "LEARNINGS: 0" diff --git a/test/gen-skill-docs.test.ts b/test/gen-skill-docs.test.ts index 309fd7e4b3..f49e461641 100644 --- a/test/gen-skill-docs.test.ts +++ b/test/gen-skill-docs.test.ts @@ -257,7 +257,7 @@ describe('gen-skill-docs', () => { expect(content).not.toContain('contributor-logs'); expect(content).toContain('Operational Self-Improvement'); expect(content).toContain('gstack-learnings-log'); - expect(content).toContain('gstack-learnings-search --limit 3'); + expect(content).toContain('gstack-learnings-search --limit "$_LEARN_PREAMBLE_LIMIT"'); }); test('generated SKILL.md with LEARNINGS_LOG contains operational type', () => {