crewforth 3.0.4 → 3.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/README.md +3 -3
  3. package/VERSION +1 -1
  4. package/adopt.sh +86 -34
  5. package/kit/CLAUDE.md +1 -1
  6. package/kit/README.md +1 -1
  7. package/kit/agents/crew-commit-agent.md +7 -3
  8. package/kit/agents/crew-frontend-expert.md +4 -4
  9. package/kit/agents/crew-performance-expert.md +1 -1
  10. package/kit/agents/crew-review-agent.md +1 -1
  11. package/kit/eval/doctor.sh +57 -3
  12. package/kit/eval/golden-routing.txt +13 -0
  13. package/kit/eval/lib/git-bash.sh +11 -2
  14. package/kit/eval/parser-conformance.sh +1 -0
  15. package/kit/eval/smoke-test.sh +2572 -373
  16. package/kit/hooks/commit-msg +1 -1
  17. package/kit/hooks/context-usage.sh +7 -1
  18. package/kit/hooks/guard-bash.sh +1545 -104
  19. package/kit/hooks/guard-commit-scan.sh +75 -19
  20. package/kit/hooks/guard-powershell.sh +65 -15
  21. package/kit/hooks/guard-write.sh +74 -22
  22. package/kit/hooks/no-bash-guard.ps1 +71 -0
  23. package/kit/hooks/pre-commit +5 -2
  24. package/kit/hooks/prompt-approval.sh +484 -0
  25. package/kit/hooks/route-hint.sh +13 -5
  26. package/kit/hooks/session-rehydrate.sh +18 -0
  27. package/kit/hooks/skill-trust.sh +17 -2
  28. package/kit/owned-blobs.tsv +43 -0
  29. package/kit/settings.json +20 -4
  30. package/kit/skills/a11y/SKILL.md +1 -0
  31. package/kit/skills/crew-doctor/SKILL.md +2 -2
  32. package/kit/skills/frontend/SKILL.md +3 -3
  33. package/kit/skills/frontend-flutter/SKILL.md +124 -0
  34. package/kit/skills/frontend-flutter/references/adaptive-and-accessible.md +81 -0
  35. package/kit/skills/frontend-flutter/references/platform-async-release.md +100 -0
  36. package/kit/skills/frontend-flutter/references/rebuilds-and-performance.md +36 -0
  37. package/kit/skills/frontend-flutter/references/sensitive-data.md +54 -0
  38. package/kit/studio/server/hooks/studio-gate.sh +35 -1
  39. package/kit/studio/server/index.js +14 -4
  40. package/kit/studio/server/lib/graph.js +64 -3
  41. package/kit/studio/server/lib/kit.js +16 -2
  42. package/kit/studio/server/lib/permissions.js +77 -2
  43. package/kit/studio/server/lib/projects.js +60 -7
  44. package/kit/studio/server/lib/session.js +16 -2
  45. package/kit/studio/web/app.js +1765 -573
  46. package/kit/studio/web/approvals.js +124 -0
  47. package/kit/studio/web/canvas.js +932 -885
  48. package/kit/studio/web/chat.js +322 -145
  49. package/kit/studio/web/convo.js +174 -0
  50. package/kit/studio/web/dock.js +221 -0
  51. package/kit/studio/web/graph-plan.js +457 -0
  52. package/kit/studio/web/icons/builtin.svg +1 -0
  53. package/kit/studio/web/index.html +116 -50
  54. package/kit/studio/web/inspect.js +110 -0
  55. package/kit/studio/web/list-plan.js +112 -0
  56. package/kit/studio/web/list.js +157 -0
  57. package/kit/studio/web/liveness.js +66 -0
  58. package/kit/studio/web/nav.js +237 -0
  59. package/kit/studio/web/newsession.js +235 -0
  60. package/kit/studio/web/press.js +65 -0
  61. package/kit/studio/web/style.css +1281 -1014
  62. package/kit/studio/web/theme.js +43 -0
  63. package/kit/studio/web/timeline-plan.js +291 -0
  64. package/kit/studio/web/timeline.js +400 -0
  65. package/kit/studio/web/tokens.css +131 -0
  66. package/kit/studio/web/toolbar-fit.js +35 -0
  67. package/package.json +5 -4
@@ -23,6 +23,13 @@ the page layout is broken on mobile|frontend-design
23
23
  requests are timing out under load|crew-performance-expert
24
24
  add client routing to the app|crew-frontend-expert
25
25
  add a new rn screen with expo router|frontend-rn-expo
26
+ # The Flutter layer answers to what only a Flutter project says: its tools, its files, its packages. A request that
27
+ # names Flutter itself goes to the frontend owner, who then applies this layer (agent over skill, as for any stack).
28
+ add a riverpod provider for the cart total|frontend-flutter
29
+ pubspec'e paket ekle ve go_router ile yeni rota tanımla|frontend-flutter
30
+ write a widget test for the login form|frontend-flutter
31
+ analysis_options.yaml uyarılarını temizle|frontend-flutter
32
+ write a flutter widget test for the login form|crew-frontend-expert
26
33
  # The client side is stack-neutral (3.0.1): a mobile request on another stack goes to the frontend owner, never to
27
34
  # the React Native layer. Turkish as typed in the field, and English.
28
35
  flutter ekranı ekle|crew-frontend-expert
@@ -103,6 +110,12 @@ choose a database for this service|backend-architecture
103
110
  flutter ekranı ekle|!frontend-rn-expo
104
111
  add a SwiftUI view for the profile|!frontend-rn-expo
105
112
  build a Jetpack Compose screen for settings|!frontend-rn-expo
113
+ # The Flutter layer must stay as quiet as the React Native one on another stack, and on the generic word "widget".
114
+ add a new rn screen with expo router|!frontend-flutter
115
+ add a SwiftUI view for the profile|!frontend-flutter
116
+ build a Jetpack Compose screen for settings|!frontend-flutter
117
+ add a home screen widget for iOS|!frontend-flutter
118
+ the dashboard widget overflows on small screens|!frontend-flutter
106
119
  # Field case (3.0.1, P2 case A): a user handing work over to another team named the area in passing — the bare word
107
120
  # "frontend" and a project called <x>_ui each routed it to the frontend skill. Turkish as it was typed, and in English.
108
121
  acme_ui için yapılacak iş varsa aktarır mısın? frontend tarafından o sorumlu|!frontend
@@ -40,16 +40,24 @@ _mt(){ local s="$1"; shift
40
40
  'set CLAUDE_CODE_GIT_BASH_PATH to') s="CLAUDE_CODE_GIT_BASH_PATH'i şuna ayarlayın:" ;;
41
41
  "Claude Code cannot find Git Bash — its hooks run under PowerShell and Crewforth's gates do not run") s="Claude Code Git Bash'i bulamıyor — hook'lar PowerShell altında koşuyor ve Crewforth'un kapıları çalışmıyor" ;;
42
42
  'install Git for Windows in its default folder, or set CLAUDE_CODE_GIT_BASH_PATH to') s="Git for Windows'u varsayılan klasörüne kurun ya da CLAUDE_CODE_GIT_BASH_PATH'i şuna ayarlayın:" ;;
43
+ 'then close the terminal and Claude Code and open them again — an open terminal keeps the old value') s="sonra terminali ve Claude Code'u kapatıp yeniden açın — açık bir terminal eski değeri taşır" ;;
43
44
  *) [ -n "${CREW_I18N_MISS:-}" ] && printf '%s\n' "$s" >> "$CREW_I18N_MISS" ;;
44
45
  esac
45
46
  fi
46
47
  printf -v _M "$s" "$@"; }
47
48
  ok(){ _mt "$@"; echo " ✅ $_M"; }
48
- warn(){ _mt "$@"; echo " ⚠️ $_M"; [ "$RC" = 0 ] && RC=3; }
49
+ warn(){ _mt "$@"; echo " ⚠️ $_M"; [ "$RC" = 0 ] && RC=3; ADVISED=1; }
49
50
  skip(){ _mt "$@"; echo " · $_M"; RC=4; }
50
51
  # bad MESSAGE FIX [arguments for MESSAGE]: the fix takes none; what follows it goes in BAD_TAIL, printed once.
51
52
  bad(){ local _m="$1" _x="$2"; shift 2; _mt "$_m" "$@"; echo " ❌ $_M"; _mt "fix: "; local _f="$_M"; _mt "$_x"
52
- echo " ↳ $_f$_M${BAD_TAIL:-}"; BAD_TAIL=""; RC=1; }
53
+ echo " ↳ $_f$_M${BAD_TAIL:-}"; BAD_TAIL=""; RC=1; ADVISED=1; }
54
+ # Every warning and failure here ends in "set CLAUDE_CODE_GIT_BASH_PATH" (or install Git). A process keeps the
55
+ # environment it started with, so a Claude Code restarted INSIDE the terminal that was open when the variable was
56
+ # changed still has the old value: in the field the fix was right and the proof came two rounds late. Said once,
57
+ # after whatever was advised.
58
+ ADVISED=0
59
+ reopen(){ [ "$ADVISED" = 1 ] || return 0
60
+ _mt 'then close the terminal and Claude Code and open them again — an open terminal keeps the old value'; echo " ↳ $_M"; }
53
61
 
54
62
  case "$(uname -s 2>/dev/null)" in MINGW*|MSYS*|CYGWIN*)
55
63
  if ! command -v cygpath >/dev/null 2>&1; then
@@ -114,6 +122,7 @@ GBEOF
114
122
  "install Git for Windows in its default folder, or set CLAUDE_CODE_GIT_BASH_PATH to"
115
123
  fi
116
124
  fi
125
+ reopen
117
126
  fi ;;
118
127
  esac
119
128
  exit "$RC"
@@ -222,6 +222,7 @@ fi
222
222
  # slice against itself the moment the ladder disappears.
223
223
  # ---------------------------------------------------------------------------------------------------------
224
224
  { echo '#!/usr/bin/env bash'; echo 'INPUT="$(cat)"'
225
+ awk '/^_json_find\(\)/{f=1} f{print} f&&/^}$/{exit}' "$HOOK"
225
226
  awk '/^_json_slice\(\)/{f=1} f{print} f&&/^}$/{exit}' "$HOOK"
226
227
  awk '/^_json_unescape\(\)/{f=1} f{print} f&&/^}$/{exit}' "$HOOK"
227
228
  echo '_json_unescape "$(_json_slice "$INPUT" command)"'; } > "$W/dec.sh"