@slycode/slycode 0.1.14 → 0.1.16

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 (81) hide show
  1. package/dist/bridge/session-manager.js +1 -8
  2. package/dist/bridge/session-manager.js.map +1 -1
  3. package/dist/store/skills/context-priming/references/area-index.md +121 -68
  4. package/{templates/store/skills/context-priming/references → dist/store/skills/context-priming}/references/areas/feature-guide.md +44 -18
  5. package/dist/store/skills/context-priming/references/areas/messaging.md +108 -34
  6. package/dist/store/skills/context-priming/references/areas/scripts-deployment.md +61 -16
  7. package/dist/store/skills/context-priming/references/areas/skills.md +99 -38
  8. package/{templates/updates/skills/context-priming/references → dist/store/skills/context-priming}/references/areas/terminal-actions.md +1 -1
  9. package/dist/store/skills/context-priming/references/areas/terminal-bridge.md +74 -42
  10. package/dist/store/skills/context-priming/references/areas/web-frontend.md +259 -74
  11. package/dist/web/.next/BUILD_ID +1 -1
  12. package/dist/web/.next/build-manifest.json +2 -2
  13. package/dist/web/.next/server/app/_global-error.html +2 -2
  14. package/dist/web/.next/server/app/_global-error.rsc +1 -1
  15. package/dist/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  16. package/dist/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/dist/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/dist/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/dist/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/dist/web/.next/server/app/_not-found.html +1 -1
  21. package/dist/web/.next/server/app/_not-found.rsc +1 -1
  22. package/dist/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  23. package/dist/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/dist/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  25. package/dist/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/dist/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/dist/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/dist/web/.next/server/pages/404.html +1 -1
  29. package/dist/web/.next/server/pages/500.html +2 -2
  30. package/lib/cli/sync.d.ts +7 -0
  31. package/lib/cli/sync.d.ts.map +1 -1
  32. package/lib/cli/sync.js +32 -0
  33. package/lib/cli/sync.js.map +1 -1
  34. package/lib/cli/update.d.ts.map +1 -1
  35. package/lib/cli/update.js +9 -0
  36. package/lib/cli/update.js.map +1 -1
  37. package/package.json +1 -1
  38. package/templates/kanban-seed.json +1 -1
  39. package/templates/store/skills/context-priming/references/area-index.md +121 -68
  40. package/templates/{updates/skills/context-priming/references → store/skills/context-priming}/references/areas/feature-guide.md +44 -18
  41. package/templates/store/skills/context-priming/references/areas/messaging.md +108 -34
  42. package/templates/store/skills/context-priming/references/areas/scripts-deployment.md +61 -16
  43. package/templates/store/skills/context-priming/references/areas/skills.md +99 -38
  44. package/{dist/store/skills/context-priming/references → templates/store/skills/context-priming}/references/areas/terminal-actions.md +1 -1
  45. package/templates/store/skills/context-priming/references/areas/terminal-bridge.md +74 -42
  46. package/templates/store/skills/context-priming/references/areas/web-frontend.md +259 -74
  47. package/templates/updates/skills/context-priming/references/area-index.md +121 -68
  48. package/{dist/store/skills/context-priming/references → templates/updates/skills/context-priming}/references/areas/feature-guide.md +44 -18
  49. package/templates/updates/skills/context-priming/references/areas/messaging.md +108 -34
  50. package/templates/updates/skills/context-priming/references/areas/scripts-deployment.md +61 -16
  51. package/templates/updates/skills/context-priming/references/areas/skills.md +99 -38
  52. package/templates/{store/skills/context-priming/references → updates/skills/context-priming}/references/areas/terminal-actions.md +1 -1
  53. package/templates/updates/skills/context-priming/references/areas/terminal-bridge.md +74 -42
  54. package/templates/updates/skills/context-priming/references/areas/web-frontend.md +259 -74
  55. package/dist/store/skills/context-priming/references/areas/claude-actions.md +0 -120
  56. package/dist/store/skills/context-priming/references/references/area-index.md +0 -152
  57. package/dist/store/skills/context-priming/references/references/areas/messaging.md +0 -251
  58. package/dist/store/skills/context-priming/references/references/areas/scripts-deployment.md +0 -183
  59. package/dist/store/skills/context-priming/references/references/areas/skills.md +0 -196
  60. package/dist/store/skills/context-priming/references/references/areas/terminal-bridge.md +0 -263
  61. package/dist/store/skills/context-priming/references/references/areas/web-frontend.md +0 -437
  62. package/dist/store/skills/context-priming/references/references/maintenance.md +0 -128
  63. package/templates/store/skills/context-priming/references/areas/claude-actions.md +0 -120
  64. package/templates/store/skills/context-priming/references/references/area-index.md +0 -152
  65. package/templates/store/skills/context-priming/references/references/areas/messaging.md +0 -251
  66. package/templates/store/skills/context-priming/references/references/areas/scripts-deployment.md +0 -183
  67. package/templates/store/skills/context-priming/references/references/areas/skills.md +0 -196
  68. package/templates/store/skills/context-priming/references/references/areas/terminal-bridge.md +0 -263
  69. package/templates/store/skills/context-priming/references/references/areas/web-frontend.md +0 -437
  70. package/templates/store/skills/context-priming/references/references/maintenance.md +0 -128
  71. package/templates/updates/skills/context-priming/references/areas/claude-actions.md +0 -120
  72. package/templates/updates/skills/context-priming/references/references/area-index.md +0 -152
  73. package/templates/updates/skills/context-priming/references/references/areas/messaging.md +0 -251
  74. package/templates/updates/skills/context-priming/references/references/areas/scripts-deployment.md +0 -183
  75. package/templates/updates/skills/context-priming/references/references/areas/skills.md +0 -196
  76. package/templates/updates/skills/context-priming/references/references/areas/terminal-bridge.md +0 -263
  77. package/templates/updates/skills/context-priming/references/references/areas/web-frontend.md +0 -437
  78. package/templates/updates/skills/context-priming/references/references/maintenance.md +0 -128
  79. /package/dist/web/.next/static/{wMUaNt62q8VYjpVs4m1_t → 0m9O2FYuB-xI-Vb-Y4k-C}/_buildManifest.js +0 -0
  80. /package/dist/web/.next/static/{wMUaNt62q8VYjpVs4m1_t → 0m9O2FYuB-xI-Vb-Y4k-C}/_clientMiddlewareManifest.json +0 -0
  81. /package/dist/web/.next/static/{wMUaNt62q8VYjpVs4m1_t → 0m9O2FYuB-xI-Vb-Y4k-C}/_ssgManifest.js +0 -0
@@ -1,101 +1,154 @@
1
1
  # Area Index
2
2
 
3
- Updated: 2026-02-14
3
+ Updated: 2026-03-14
4
4
 
5
5
  ## Areas
6
6
 
7
7
  ### web-frontend
8
8
  - path: areas/web-frontend.md
9
- - updated: 2026-02-14
10
- - load-when: dashboard, kanban, cards, modal, UI components, drag-drop, project page, checklist, command config, health monitor, reconnection, toolkit, assets, search, scaffolding, activity feed, keyboard shortcuts, health score, tab sync, theme, design system, colors, gradient, texture, grain, noise, logo, neon, glow, blend mode, terminal styling, dark mode, light mode, provider selector, provider dropdown
9
+ - updated: 2026-03-14
10
+ - load-when: dashboard, kanban, cards, modal, UI components, drag-drop, project page, checklist, action config, health monitor, reconnection, cli assets, assets, search, scaffolding, activity feed, keyboard shortcuts, health score, tab sync, theme, design system, colors, gradient, texture, grain, noise, logo, neon, glow, blend mode, terminal styling, dark mode, light mode, provider selector, provider button, store, updates, update delivery, diff, assistant, asset creation, terminal prompt, pushToTerminal, Code Den, StoreView, UpdatesView, SkillDiffViewer, AssetAssistant, mcp config, automation, automations, scheduler, cron, cron-utils, timezone, TZ, agent notes, notes, summary note, wide viewport, 4K, copyright, favicon, context menu, right-click, confirm dialog, CliAssetsTab, project reorder, displayOrder, version check, VersionUpdateToast, AddProjectModal, scaffold wizard, provider overlay, placement, classAssignments, voice, voice input, voice recording, transcribe, Whisper, STT, VoiceControlBar, VoiceSettings, VoiceContext, VoiceClaimant, FloatingVoiceWidget, ThemeToggle, settings, image paste, screenshot, clipboard, DashboardData, chevron, hazard stripe, loadParentEnv, shadow, shadow depth, elevation, shadow-surface, shadow-card, shadow-overlay, lane texture, lane-texture, inset shadow, card number, glow-color, type emoji, glassmorphic, compact card, JetBrains Mono, priority glow, responsive, mobile, touch, fullscreen, snap-scroll, scrollbar-hide, import preview, ImportDialog, SKILL.md-only, skillMainOnly, activity ring, DEV_HOSTNAME, allowedDevOrigins, version display, getRepoRoot, getParentEnv, MASTER_PROJECT_ID, workspace ID, basename, fetchWithTimeout, checkSessionAlive, liveness check, soft failure, hard failure, activity detection, fresh session, resume session, action-scanner, ActionUpdatesModal, action updates, action cache, invalidateActionsCache, instruction file, instruction file warning, resize broadcast, resize sync, grace window, nextRun, getNextRun, HMR, globalThis, per-card provider
11
11
  - notes:
12
- - CardModal tabs are dynamic: Details, Design?, Feature?, Test?, Checklist?, Terminal
13
- - Terminal tab auto-connects when session is running
14
- - HealthMonitor in ProjectHeader shows CPU/memory/terminals, expands on hover
15
- - ConnectionManager handles SSE reconnection with Page Visibility API
16
- - Cards with active work show pulsing green glow (active-glow-card CSS class)
17
- - Commands use startupCommands (session start) and activeCommands (toolbar)
18
- - ToolkitTab manages cross-project asset deployment (commands/skills/agents)
19
- - HealthDot on ProjectCard shows 0-100 score (green/amber/red)
20
- - paths.ts replaces all hardcoded paths with dynamic resolution
21
- - CardModal has edit session protection (2000ms grace period, last-known-value tracking)
22
- - Provider selector in ClaudeTerminalPanel pre-fills from stage defaults via /api/providers
23
- - CardModal detects existing session's provider from session name (projectId:provider:card:cardId)
24
- - NEVER use dark-end color scales for dark mode vibrant colors use bright color at low opacity
25
- - soft-light blend produces warm/red cast on dark backgrounds use screen or overlay instead
26
- - drop-shadow filters create rectangular glow on images with opaque backgrounds incompatible with mix-blend-mode logo transparency
27
- - Gradient direction: always left (vibrant) to right (soft), never center-out
28
- - Texture is three layers: fine grain + perlin noise + depth highlighteach with separate light/dark tuning
12
+ - CardModal tabs: Details, Notes?, Design?, Feature?, Test?, Checklist?, Terminal. Edit session protection (2000ms grace). suppressAutoTerminal from context menu. Fullscreen on mobile (rounded-none, h-full), windowed on desktop (lg:rounded-xl, lg:max-w-4xl). Horizontal tab scroll with scrollbar-hide on mobile.
13
+ - Automation uses card description as prompt. Run Now button with feedback. Orange theme. onActiveAutomationsChange drives header pulse. Timezone badge in AutomationsScreen header + AutomationConfig one-shot picker. Automation safeguards: cannot archive automation cards (CLI + web), cannot enable automation on archived cards.
14
+ - Surgical save: changedCardIds in POST merges against disk. last_modified_by tracks source (web/cli/agent).
15
+ - Right-click context menu on cards: move stage, set priority, copy title/ID/desc, archive, delete. Portal z-51/52, lane-colored accent bars.
16
+ - Z-index layers: BackdropModal z-50, ContextMenu z-51, Submenu z-52, ConfirmDialog z-60
17
+ - Provider button group pre-fills from stage defaults. Session name: {projectId}:{provider}:card:{cardId}
18
+ - Store canonical flat layout (store/skills/, store/actions/, store/agents/). UpdatesView: accept/dismiss/preview workflow. CliAssetsTab (was ToolkitTab). ImportDialog for skill imports: SKILL.md-only default, full folder option. Preview API lists files before import.
19
+ - Action updates: ActionUpdatesModal for accept/dismiss/preview with diff viewer. ProjectHeader polls for actionEntries count, shows badge on Actions button. SlyActionConfigModal shows "Updates" tab when available. Cache invalidated via /api/sly-actions/invalidate on modal close.
20
+ - action-scanner.ts: scans store/actions/*.md, parses YAML frontmatter, assembles SlyActionsConfig with 30s cache, writes back from config (reverse-engineers classes from classAssignments), content-hash based update scanning, additive class merge on accept.
21
+ - Dashboard project drag-and-drop reordering with displayOrder field. AddProjectModal wizard: details → providers → review → creating → summary.
22
+ - VersionUpdateToast: npm version polling (6-hour interval, daily dismiss, bottom-left toast).
23
+ - Scheduler auto-starts via instrumentation.ts (30s), 60s grace window prevents stale ticks on re-enable. HMR-safe via globalThis state/timer. pushToTerminal() dispatches to GlobalClaudePanel.
24
+ - Single `actions` prop on ClaudeTerminalPanel, split by placement locally (startup/toolbar/both). CardModal and GlobalClaudePanel each call one getActionsForClass().
25
+ - SlyActionConfigModal: two-tab layout Commands tab (edit definitions + placement dropdown) and Classes tab (assign + reorder commands per terminal class). Voice-enabled assistant terminal, Escape passes through to terminal when expanded.
26
+ - Voice: global VoiceContext (useVoice() hook). Claim system: CardModal/GlobalClaudePanel claim release. FloatingVoiceWidget when unclaimed. VoiceControlBar, MediaRecorder → /api/transcribe → insert at claimant target. ThemeToggle for light/dark in Dashboard.
27
+ - Image paste: Terminal.tsx intercepts Ctrl+V via xterm's `attachCustomKeyEventHandler` (not DOM keydown — reliable after crash/reconnect), clipboard.read() for images → bridge /sessions/:name/image → inject `[Screenshot: ...]` into PTY. Screenshot toast overlay on ClaudeTerminalPanel.
28
+ - Path resolution centralized: getSlycodeRoot() (workspace) + getPackageDir() (dev: repo root, prod: node_modules/@slycode/slycode/dist/). All API routes use these no local getRepoRoot(). CLI assets import/sync use registry.ts getRepoRoot() instead of claude-master project lookup.
29
+ - next.config.ts: getParentEnv() reads DEV_HOSTNAME from parent .env for allowedDevOrigins (no hardcoded hostnames). Dashboard footer shows slycode version from /api/version-check with clickable slycode.ai link.
30
+ - Scrubbed hardcoded project names: asset-scanner.ts uses MASTER_PROJECT_ID (path.basename), kanban-paths.ts derives workspace ID with underscore→hyphen normalization. paths.ts removed legacy root env var fallback (SLYCODE_HOME → cwd only).
31
+ - NEVER use dark-end color scales for vibrant dark mode — use bright color at low opacity instead
32
+ - Shadow depth system: 3 CSS custom property tiers (--shadow-surface, --shadow-card, --shadow-overlay) with light/dark variants. All neon-pulse keyframes layer glow on top of shadow vars. CardModal uses shadow-(--shadow-overlay). KanbanColumn wrappers use lightweight shadow.
33
+ - Texture: three layers (grain + perlin + depth) + lane-texture (18px grid on column card areas) + `.light-clean` suppression (hides grain/depth on headers in light mode). soft-light → warm cast on dark — use screen. drop-shadow → rectangular glow with blend-mode logos.
34
+ - Global terminal rebranded from neon-orange to neon-blue (steely blue #2490b5 in light mode). All glow effects have separate light-mode keyframes for visibility. ClaudeTerminalPanel buttons are neon-blue.
35
+ - KanbanColumn: light mode flat solid bg (no gradients), thicker borders (3px), neutral text colors (void-500/void-600). Inset shadows on headers (color-matched per lane). Header text has drop-shadow for legibility.
36
+ - KanbanCardItem: glassmorphism (bg-white/40 + backdrop-blur, dark: bg-[#20232a]/55), priority-colored left border + hover inset glow (--glow-color CSS var), card numbers (#0001 format, JetBrains Mono), type emojis replace color dots, compact mode for done column. Session status: green ping (running), orange (paused), grey (none).
37
+ - Voice-aware click-outside: GlobalClaudePanel and SlyActionConfigModal won't close while voice is recording/transcribing.
38
+ - Scheduler timezone-aware (TZ env var). loadParentEnv() reads .env from workspace root (Next.js only loads web/.env). Always recalculates nextRun for accurate countdowns. Automation run header: === AUTOMATION RUN === with time, card, trigger (scheduled with cron description / manual), last run + relative time.
39
+ - cronToHumanReadable() in cron-utils.ts (shared by AutomationConfig, AutomationsScreen). getNextRunISO() removed — all nextRun calculation now server-side via scheduler.ts getNextRun(). Kanban GET API dynamically computes nextRun for all enabled recurring cards. Timezone abbreviation appended to time descriptions.
40
+ - AutomationsScreen redesigned: max-w-5xl centered, 2-col grid (not 3), cards have chevron texture + hazard stripe + orange left border. Large countdown timers (text-2xl), "idle" label. Collapsible tag groups via `<details>`. New CSS: `.automation-chevron`, `.hazard-stripe` + muted variants.
41
+ - AgentNote extended: summary?, summarizedCount?, dateRange? for note summarization. Amber "Summary" badge in CardModal notes tab.
42
+ - Responsive mobile: CardModal fullscreen on mobile, GlobalClaudePanel fullscreen when expanded (h-svh w-screen on mobile), HealthMonitor click-to-toggle (was hover), Terminal touch-scroll + debounced resize (150ms), ProjectHeader mobile search overlay + hidden Actions, KanbanColumn snap-scroll (85vw on mobile). `.scrollbar-hide` CSS utility. All header buttons min-h/w-[44px] touch targets.
43
+ - Activity ring: uses isActive (not status=running) for session detection. Global terminal sessions included in counts.
44
+ - Scheduler split fresh/resume: fresh uses checkSessionAlive(20s), resume uses waitForActivity()+retry. fetchWithTimeout(10s) on all bridge calls. Soft failure notifications only on hard errors.
45
+ - Instruction file warning: ClaudeTerminalPanel checks /check-instruction-file on provider/cwd change. Amber warning + opt-out checkbox if missing. createInstructionFile state passed to session creation.
46
+ - Resize broadcast: Terminal.tsx guards resize POST (visible tabs only), suppressResizePost prevents echo loop from SSE resize events, skips resize on reconnect.
29
47
 
30
48
  ### terminal-bridge
31
49
  - path: areas/terminal-bridge.md
32
- - updated: 2026-02-14
33
- - load-when: terminal, Claude panel, xterm, bridge, pty, session, websocket, SSE, spawn, terminal class, security, stats, activity log, stop-all, provider, providers.json, multi-provider, gemini, codex, claude, resume, skip-permissions, YOLO
50
+ - updated: 2026-03-14
51
+ - load-when: terminal, terminal panel, xterm, bridge, pty, session, websocket, SSE, spawn, terminal class, security, stats, activity log, stop-all, provider, providers.json, multi-provider, gemini, codex, claude, resume, skip-permissions, YOLO, session detection, session ID, screenshot, image, image upload, image delivery, group status, action endpoint, relink, race condition, creating, mutex, idempotent, session cleanup, stopped session, heartbeat, instruction file, instructionFile, altInstructionFile, check-instruction-file, ensureInstructionFile, resize broadcast, suppressResizePost, Windows, ConPTY, chunked write, deferred prompt, bracketed paste, .cmd, pendingPrompt, paste interception, attachCustomKeyEventHandler
34
52
  - notes:
35
53
  - Pass prompts as positional args to Claude CLI, NOT -p flag (-p is print mode)
36
- - Bridge binds to localhost by default (not 0.0.0.0) for security
37
- - Command whitelist in bridge-config.json (only 'claude' and 'bash' allowed)
38
- - CWD validated before spawning PTY (must be absolute path)
39
- - Activity tracking: lastOutputAt timestamp, 2s threshold for "active" status
40
- - Grace period (5s) after disconnect prevents idle timeout race condition
41
- - ActivityTransition logging with trigger details for debugging phantom blips
42
- - Atomic state saves (temp file + rename) prevent data corruption
43
- - POST /sessions/:name/stop sends Escape key (soft stop) vs DELETE (kill)
44
- - Session names now include provider: {projectId}:{provider}:card:{cardId} (with legacy fallback)
45
- - provider-utils.ts builds command args from providers.json config (flag vs subcommand resume)
46
- - GUID detection only for Claude; Gemini/Codex use --resume --last
54
+ - Bridge: localhost binding, command whitelist (bridge-config.json), CWD validation (absolute path)
55
+ - Activity tracking: lastOutputAt, 2s threshold. Grace period (5s) prevents idle timeout race. activityStartedAt for debouncing.
56
+ - Atomic state saves (temp + rename). bridge-sessions.json crash on corrupt, graceful on ENOENT.
57
+ - Session names: {projectId}:{provider}:card:{cardId} with legacy fallback. POST stop = Escape, DELETE = kill.
58
+ - provider-utils.ts builds command args from providers.json (flag vs subcommand resume)
59
+ - Session detection ALL providers: Claude (.jsonl), Codex (rollout UUID), Gemini (chat JSON) — 60s timeout
60
+ - Prompt works alongside resume: Claude positional, Codex positional after subcommand
61
+ - claude-utils.ts: provider-agnostic dispatchers (getProviderSessionDir, detectNewProviderSessionId, getMostRecentProviderSessionId)
62
+ - Image delivery: POST /sessions/:name/image (multer, 10MB), screenshot-utils.ts saves to screenshots/ in session CWD, 10-file retention, auto-.gitignore
63
+ - ActivityTransition: became (active/inactive), outputAgeMs, triggerSnippet/RawHex/DataLength (flat, not nested)
64
+ - New endpoints: GET /groups/:group/status, POST /sessions/:name/action (compact/clear/interrupt), POST /sessions/:name/relink
65
+ - SessionInfo includes group, resumed, lastActive fields
66
+ - Race condition fix: createSession() uses 'creating' placeholder as mutex. Concurrent requests for same session get 202 (idempotent). guidDetectionCancelled flag prevents stale detection overwrites.
67
+ - Stopped sessions removed from in-memory map (frees slot), data preserved in persistedState for resume.
68
+ - SSE heartbeat: 15s comment heartbeats keep connections alive through proxies (Tailscale, Next.js)
69
+ - Instruction file fallback: checkInstructionFile() priority scan (primary → alt → sibling copy source). ensureInstructionFile() copies on demand. Opt-in via createInstructionFile in CreateSessionRequest. GET /check-instruction-file endpoint for pre-flight checks.
70
+ - Resize broadcast: PTY resize events sent via SSE to all connected tabs. Terminal.tsx guards resize POST (visible tabs only, suppressResizePost echo-loop prevention, skip on reconnect).
71
+ - Windows ConPTY: .cmd extension auto-appended for CLI commands. Deferred prompt delivery via bracketed paste after output settles (1.5s quiet / 30s max). Chunked writes (1024B, 500ms delay) avoid ConPTY truncation. Paste interception uses xterm `attachCustomKeyEventHandler` (not DOM keydown).
47
72
 
48
- ### claude-actions
49
- - path: areas/claude-actions.md
50
- - updated: 2026-02-09
51
- - load-when: actions, prompts, templates, context injection, commands, visibility, command config
73
+ ### terminal-actions
74
+ - path: areas/terminal-actions.md
75
+ - updated: 2026-03-10
76
+ - load-when: actions, prompts, templates, context injection, commands, visibility, action config, terminal commands, startup commands, active commands, test review, placement, classAssignments, deep design, deep-design, action scanner, action updates, action .md, store/actions, action frontmatter, action cache, action delivery
52
77
  - notes:
53
- - Unified command system in data/commands.json (v2.0)
54
- - No 'type' field on Command - filtering by class + sessionState
55
- - getStartupCommands() for session start, getActiveCommands() for toolbar
56
- - Session states: new, resume, active, any
57
- - Groups: Card Actions, Session, Project, Utilities, Problems, Command Assistant
58
- - Update Priming and Chore Plan are newer commands
78
+ - Provider-agnostic: same commands across Claude, Codex, Gemini. Individual .md files in store/actions/ (v4.0)
79
+ - Each action is a .md file with YAML frontmatter (name, version, label, group, placement, classes map) + prompt body
80
+ - classAssignments assembled at runtime from per-action classes maps, sorted by priority (ascending)
81
+ - Context templates hardcoded in sly-actions.ts (no longer in JSON config)
82
+ - action-scanner.ts: parse, cache (30s), assemble config, write back, update scanning (content-hash), accept with additive class merge
83
+ - messaging/sly-action-filter.ts has duplicated YAML parser + 30s cache (reads store/actions/ directly)
84
+ - Action update delivery: updates/actions/ → content-hash diff → accept with class merge → store/actions/
85
+ - ActionUpdatesModal.tsx for accept/dismiss/preview. ProjectHeader polls for update count badge.
86
+ - SlyActionConfigModal shows "Updates" tab when action updates available
87
+ - Groups: Card Actions (14), Session, Project, Utilities, Action Assistant (no Problems group)
88
+ - Deep Design: 4-phase workflow (design doc → parallel analysis agents → synthesis → Q&A). 6 optional agent perspectives.
89
+ - Test Review: interactive testing-lane with checklist assessment, area priming, max 3 questions/round
90
+ - Organise Backlog: `kanban board` snapshot + `kanban reorder` for reprioritisation
59
91
 
60
92
  ### messaging
61
93
  - path: areas/messaging.md
62
- - updated: 2026-02-14
63
- - load-when: telegram, messaging, voice, TTS, STT, speech, channel, bot, ElevenLabs, Whisper, voice swap, stop command, response mode, tone, command filter, provider, permission mismatch
94
+ - updated: 2026-03-13
95
+ - load-when: telegram, messaging, voice, TTS, STT, speech, channel, bot, ElevenLabs, Whisper, whisper.cpp, local STT, STT_BACKEND, voice swap, stop command, response mode, tone, action filter, provider, provider resolution, bridge provider, explicit session, default provider, PROVIDER_LABELS, permission mismatch, /search, /provider, /sly, /switch, /global, /project, card search, photo, image, album, navigation, target, inline keyboard, callback, instruction file, ifc_, pre-flight, PendingInstructionFileConfirm
64
96
  - notes:
65
- - Channel abstraction in types.ts, Telegram is first implementation
66
- - Voice pipeline: Whisper STT ElevenLabs v3 TTS with [audio tags]
67
- - sendTextRaw() bypasses Markdown (preserves [brackets] for voice tags)
68
- - Chat actions for status indicators (record_voice, typing, upload_voice)
69
- - Voice search queries both personal (/v2/voices) and community (/v1/shared-voices)
70
- - State persisted in messaging-state.json (project + voice + responseMode + voiceTone)
71
- - CLI tool used by messaging skill to send outbound messages
72
- - "stop" text intercepted and sends Escape to active session (not forwarded as prompt)
73
- - command-filter.ts provides context-aware command filtering with template resolution
74
- - kanban-client.ts gives direct access to project card data for prompts
75
- - Messaging always forces skipPermissions: true (remote can't approve prompts)
76
- - Permission mismatch detection when session started from web UI without skip-permissions
77
- - State persists selectedProvider alongside project/voice/mode/tone
97
+ - Channel interface: onText/onVoice/onPhoto/onCommand + sendText/sendTextRaw/sendVoice/sendInlineKeyboard/setPersistentKeyboard/onCallback
98
+ - Navigation model: three-level targets (global/project/card) via /switch command with inline keyboards
99
+ - Bot commands: /start, /switch, /global, /project, /search, /sly, /status, /provider, /voice, /mode, /tone
100
+ - Callback prefixes: sw_ (switch), qc_ (quick card), cfg_ (config), perm_ (permissions), mode_, tone_
101
+ - State: messaging-state.json (targetType, projectId, cardId, cardStage, provider, voice, responseMode, voiceTone)
102
+ - Voice: Dual-backend STT (OpenAI Whisper or local whisper.cpp via STT_BACKEND env var) ElevenLabs v3 TTS with [audio tags]. "stop" intercepted → Escape to session.
103
+ - skipPermissions always true. Permission mismatch detection for web-started sessions.
104
+ - sly-action-filter.ts: v3 classAssignments-based filtering. kanban-client.ts: card data, searchCards
105
+ - Photo albums batched via media_group_id (2s window). BridgeClient.sendImage() → bridge screenshot
106
+ - Persistent keyboard: [['/switch', '/search'], ['/provider', '/status'], ['/voice', '/tone'], ['/mode', '/sly']]
107
+ - Session names: global:{provider}:global, {projectId}:{provider}:global, {projectId}:{provider}:card:{cardId}
108
+ - Provider auto-resolution: resolveProviderFromBridge() / resolveProjectProviderFromBridge() pick provider from most recent bridge session. hasExplicitSession() determines default vs explicit. Navigation commands (sw_, /global, /project) auto-resolve provider. cfg_ callback updates providers.json global default when no explicit session.
109
+ - Instruction file pre-flight: checkInstructionFilePreFlight() checks before new session creation (text/voice/photo). Shows ifc_ inline buttons if needed. PendingInstructionFileConfirm stored in StateManager (ephemeral). BridgeClient.checkInstructionFile() + createInstructionFile param on ensureSession/sendMessage.
78
110
 
79
111
  ### skills
80
112
  - path: areas/skills.md
81
- - updated: 2026-02-09
82
- - load-when: skills, commands, agents, hooks, slash commands, SKILL.md, scaffolding
113
+ - updated: 2026-03-14
114
+ - load-when: skills, commands, agents, hooks, slash commands, SKILL.md, scaffolding, store, cross-provider, convert-asset, notes, notes summarize, automation, kanban CLI, last_modified_by, updates, update delivery, npm, packages, slycode CLI, migrate, board, reorder, build pipeline, sync-updates, store-manifest, provider overlay, base-instructions, slycode config, slycode uninstall, tutorial project, card number, nextCardNumber, licensing, BUSL, open-core, skillMainOnly, STT_BACKEND, WHISPER_CLI_PATH, WHISPER_MODEL_PATH, timezone, TZ, create-slycode wizard, @slycode scope, @slycode/slycode, @slycode/create-slycode
83
115
  - notes:
84
- - Skills live in .claude/skills/, commands in .claude/commands/, agents in .claude/agents/
85
- - 6 skills: context-priming, interactive-explainer, skill-creator, messaging, claude-code-docs-maintainer, kanban
86
- - 1 agent: doc-updater
87
- - 10 commands: checkpoint, feature, chore, implement, design, doc-discovery, doc-update, reference-fetch, create-command, problem_summary
88
- - Scaffold templates in data/scaffold-templates/
116
+ - ALL commands converted to skills. 17 skills + 1 agent (doc-updater) + 1 dummy skill (inert test). .claude/commands/ removed. Licensed under BUSL-1.1 (open-core).
117
+ - Store: 17 canonical skills (store/skills/) + actions (store/actions/*.md). Flat layout, no provider subdirectories.
118
+ - Update delivery: updates/ → accept → store/ (with backup) → deploy to projects. Actions use content-hash comparison + additive class merge.
119
+ - NPM: packages/slycode/ (CLI, 11 subcommands incl config + uninstall) + packages/create-slycode/ (scaffold). .agents/skills/ for Codex format.
120
+ - kanban.js: board, reorder, notes (add/list/search/edit/delete/clear/oldest/summarize), automation subcommands. stamps last_modified_by/source on writes. Notes: 100 hard cap, 30 soft suggestion threshold, summarize replaces oldest N with summary note. Archive safeguard: automation cards cannot be archived. Sequential card numbers: ensureCardNumbers() auto-backfills on first write, nextCardNumber tracked on kanban root. Kanban skill v1.4.0: multiline description example in docs. `automation enable` recalculates nextRun via croner.
121
+ - Scaffold: multi-provider, tutorial content seeded into workspace root (not separate slycode_tutorial/ subdirectory). Kanban seed uses stage-based format. Clean output: suppresses zero-count lines, reports new vs existing doc dirs. Setup wizard prompts for timezone (auto-detects, writes TZ= to .env). System service prompt skipped on Windows.
122
+ - NPM packages under `@slycode` scope: `@slycode/slycode` (v0.1.11), `@slycode/create-slycode` (v0.1.11). Template paths: `node_modules/@slycode/slycode/templates/`.
123
+ - Build pipeline: build-package.ts → sync-updates.ts (skills + actions) → copy scaffold-templates/ + store/ + updates/actions/ to dist/. Templates (skills, actions, tutorial-project) removed from packages/slycode/templates/ — build pipeline is sole delivery mechanism.
124
+ - Hooks: useSlyActionsConfig.ts (not useCommandsConfig.ts)
125
+
126
+ ### feature-guide
127
+ - path: areas/feature-guide.md
128
+ - updated: 2026-03-14
129
+
130
+ - load-when: feature guide, feature reference, full scope, system overview, product overview, comprehensive reference, all features, complete reference, deep dive features, product messaging, value proposition, USP, positioning, user story, what is slycode, why slycode, target audience, marketing, website copy, README copy, onboarding copy, pricing, teams tier, per-card provider selection
131
+ - notes:
132
+ - Auto-maintained by automation card-1772101929502
133
+ - Comprehensive reference of every SlyCode feature, function, and behavior
134
+ - Use when needing full product scope for design docs, comparisons, or thorough analysis
135
+ - PROTECTED: documentation/features/042_slycode_product_messaging.md is the canonical product messaging framework. It defines SlyCode's positioning, value proposition, messaging pillars, target audience, pricing framing, and proof points. Load this document whenever product identity, messaging, marketing copy, or user-facing language is relevant. Do NOT remove or overwrite this reference during context priming updates.
89
136
 
90
137
  ### scripts-deployment
91
138
  - path: areas/scripts-deployment.md
92
- - updated: 2026-02-10
93
- - load-when: setup, scripts, deployment, start, stop, restart, dev, ports, service, systemd, launchd, linger, PID, zombie, sly-start, sly-stop, sly-dev, sly-restart, setup.sh, .env, environment, production, build, tmux, bridge-sessions, XDG_RUNTIME_DIR
139
+ - updated: 2026-03-14
140
+ - load-when: setup, scripts, deployment, start, stop, restart, dev, ports, service, systemd, launchd, linger, PID, zombie, sly-start, sly-stop, sly-dev, sly-restart, setup.sh, .env, environment, production, build, tmux, bridge-sessions, XDG_RUNTIME_DIR, build tools, gcc, npm, packages, slycode, create-slycode, migrate, build-package, sync-updates, store-manifest, SLYCODE_HOME, path resolution, getSlycodeRoot, getPackageDir, slycode.config.js, config, uninstall, DEV_HOSTNAME, legacy root env var, timezone, TZ
94
141
  - notes:
95
142
  - Two port ranges: dev (3003/4/5) and prod (7591/2/3 = "sly" on keypad)
96
143
  - Stop by port, NOT PID files (npm spawns children, PIDs go stale)
97
144
  - bridge-sessions.json is critical — crash on read errors, never silently wipe
98
145
  - XDG_RUNTIME_DIR must be set for systemctl --user in code-server
99
- - Build every time on prod start no stale build risk
146
+ - slycode.config.js: workspace-level config for ports, services, host. Loaded by config/loader.ts.
147
+ - Default host: 127.0.0.1. Only web binds to config.host; bridge+messaging always localhost.
148
+ - slycode CLI: 11 subcommands (workspace, start, stop, service, doctor, skills, sync, update, config, uninstall)
100
149
  - sly-dev.sh tmux hook calls sly-stop.sh on session close to prevent zombies
101
150
  - Global CLIs: sly-kanban, sly-messaging, sly-scaffold (symlinked to ~/bin)
151
+ - Build: build-package.ts preserves tutorial-project/ template during wipe/rebuild
152
+ - NPM packages: packages/slycode/ (v0.1.0 CLI) and packages/create-slycode/ (v0.1.0 scaffold)
153
+ - Tutorial v3: content seeded into workspace root (not slycode_tutorial/ subdir). Registry default project = workspace root.
154
+ - Path resolution simplified: legacy root env var env var removed. Resolution is now SLYCODE_HOME → cwd fallback only.
@@ -1,8 +1,8 @@
1
- <!-- Last reviewed: 2026-03-13 -->
1
+ <!-- Last reviewed: 2026-03-14 -->
2
2
 
3
3
  # SlyCode Feature Reference
4
4
 
5
- > Auto-generated comprehensive reference. Last updated: 2026-03-13
5
+ > Auto-generated comprehensive reference. Last updated: 2026-03-14
6
6
  > Single source of truth for all SlyCode features, functions, and behaviors.
7
7
  > NOT a user guide. Maximally information-dense AI reference document.
8
8
 
@@ -224,6 +224,7 @@ SlyCode CLI (npm package) <--> All services (start/stop/update/sync)
224
224
 
225
225
  ### Sly Action Config Modal (`SlyActionConfigModal.tsx`)
226
226
  - Voice integration: registers assistant terminal with VoiceContext (`voiceTerminalId="action-assistant"`); `onTerminalReady` wires `registerTerminal`/`unregisterTerminal`
227
+ - Terminal context project name: `'SlyCode'` (was `'ClaudeMaster'`)
227
228
  - Voice-aware dismiss: checks `voice.voiceState` from `useVoice()` context; won't close on outside-click while voice is busy
228
229
  - Escape key: passes through to terminal uninterrupted when assistant panel is expanded (no longer closes assistant); only navigates back/closes when assistant is collapsed
229
230
  - **Action updates integration**: accepts `actionUpdateCount` and `onShowActionUpdates` props; renders badge with pending count in header when > 0; clicking badge invokes `onShowActionUpdates` callback to open `ActionUpdatesModal`
@@ -267,6 +268,13 @@ SlyCode CLI (npm package) <--> All services (start/stop/update/sync)
267
268
  - VoiceSettingsPopover: configurable shortcuts (Ctrl+., Space, Enter, Shift+Enter, Escape)
268
269
  - FloatingVoiceWidget: always-visible mic button
269
270
 
271
+ ### Transcribe API (`api/transcribe/route.ts`)
272
+ - **Dual STT backend**: `STT_BACKEND` env var selects backend; `'local'` uses local whisper.cpp, default `'openai'` uses OpenAI Whisper API
273
+ - **Local backend**: requires `WHISPER_CLI_PATH` (path to whisper-cli binary) and `WHISPER_MODEL_PATH` (path to .ggml model file); returns 401 if not configured
274
+ - **Local pipeline**: writes uploaded audio to temp file, converts to 16kHz mono WAV via `ffmpeg` (30s timeout), runs `whisper-cli` with `--no-timestamps --output-txt` (120s timeout), cleans up temp files in `finally` block
275
+ - **Env loading**: `loadEnv()` reads all `[A-Z_]+=` lines from root `.env` file (was `loadEnvKey()` reading only `OPENAI_API_KEY`); caches parsed values; sets `process.env` for keys not already present
276
+ - **Audio format detection**: determines extension from MIME type (`mp4`/`ogg`/`webm`); used for both backends
277
+
270
278
  ### Health Monitor (`HealthMonitor.tsx`)
271
279
  - CPU%, Memory, Swap from /api/system-stats; terminal counts from /bridge/stats
272
280
  - Green (<70%), Amber (70-90%), Critical (>=90%); "Stop All" with confirmation
@@ -343,7 +351,7 @@ SlyCode CLI (npm package) <--> All services (start/stop/update/sync)
343
351
  | /api/projects/[id] | GET/PUT/DELETE | CRUD |
344
352
  | /api/projects/reorder | POST | Reorder |
345
353
  | /api/file | POST/GET | Upload (images) / read file content |
346
- | /api/transcribe | POST | Whisper STT |
354
+ | /api/transcribe | POST | Whisper STT (OpenAI API or local whisper.cpp backend via STT_BACKEND env) |
347
355
  | /api/settings | GET/PUT | Preferences |
348
356
  | /api/areas | GET | Context-priming areas |
349
357
  | /api/terminal-classes | GET | Terminal classes |
@@ -378,6 +386,7 @@ SlyCode CLI (npm package) <--> All services (start/stop/update/sync)
378
386
  23. SSE-to-polling migration: sly-actions config consumers switched from SSE stream to 30s polling via `useSlyActionsConfig()` hook to conserve scarce HTTP/1.1 connection slots (6 per origin browser limit); SSE stream endpoint retained for backward compatibility
379
387
  24. Action update acceptance: additive class merge preserves user customizations -- only adds new upstream classes to the store copy; records upstream content hash (not store hash) so class-merged store files don't trigger false future updates
380
388
  25. Instruction file fallback: ClaudeTerminalPanel checks bridge for missing provider instruction files before session start; offers to auto-create from fallback source (e.g. copy provider template when project lacks CLAUDE.md)
389
+ 26. Transcribe API env loading: `loadEnv()` reads parent `.env` (via `getSlycodeRoot()`) since Next.js only auto-loads `web/.env`; caches parsed values; STT_BACKEND, WHISPER_CLI_PATH, WHISPER_MODEL_PATH, OPENAI_API_KEY all resolved from this file
381
390
 
382
391
  ### Key Files
383
392
  | File | Purpose |
@@ -418,6 +427,7 @@ SlyCode CLI (npm package) <--> All services (start/stop/update/sync)
418
427
  | web/src/app/api/cli-assets/store/route.ts | Store import with skillMainOnly option |
419
428
  | web/src/app/api/cli-assets/store/preview/route.ts | Skill file listing preview for import dialog |
420
429
  | web/src/app/api/cli-assets/updates/route.ts | Unified updates API: skills + actions scan, accept, dismiss |
430
+ | web/src/app/api/transcribe/route.ts | Whisper STT: dual backend (OpenAI API / local whisper.cpp), env loading |
421
431
  | web/src/app/api/sly-actions/invalidate/route.ts | Actions config cache invalidation |
422
432
  | web/src/app/globals.css | Tokens, colors, priority-based glow keyframes, lane texture, automation textures |
423
433
  | web/src/app/layout.tsx | Font loading (Geist Sans, Geist Mono, JetBrains Mono) |
@@ -707,11 +717,12 @@ AutomationConfig {
707
717
  - No PTY kill needed for `creating` sessions (no PTY exists yet)
708
718
  - `stopAllSessions()` includes `creating` in its status filter alongside `running`/`detached`
709
719
  - On stop: session deleted from in-memory `sessions` Map to free the slot; session data preserved in `persistedState` for future resume; `getSessionInfo()` falls back to `persistedState` when not in the Map
720
+ - `hasHistory` in session info: true only when `claudeSessionId` exists (not just persisted state presence) — sessions that never detected a GUID show `hasHistory: false`
710
721
 
711
722
  ### Provider Session Detection
712
723
  | Provider | Dir | Resume |
713
724
  |----------|-----|--------|
714
- | Claude | ~/.claude/projects/-{cwd}/ | --resume {guid} |
725
+ | Claude | ~/.claude/projects/-{cwd}/ (path chars `/ _ \ :` → `-`) | --resume {guid} |
715
726
  | Codex | ~/.codex/sessions/YYYY/MM/DD/ | codex resume {guid} |
716
727
  | Gemini | ~/.gemini/tmp/{SHA256}/chats/ | --resume |
717
728
  - Before/after file list; poll 200ms; live `getClaimedGuids()` check per iteration
@@ -807,7 +818,7 @@ AutomationConfig {
807
818
  | bridge/src/websocket.ts | WS heartbeat |
808
819
  | bridge/src/pty-handler.ts | PTY ops |
809
820
  | bridge/src/provider-utils.ts | Command building, instruction file check/ensure, provider config cache |
810
- | bridge/src/claude-utils.ts | Session detection |
821
+ | bridge/src/claude-utils.ts | Session detection, Claude project dir path transformation (cross-platform) |
811
822
  | bridge/src/screenshot-utils.ts | Image handling |
812
823
  | data/providers.json | Provider definitions (commands, flags, instruction files, defaults) |
813
824
 
@@ -822,7 +833,7 @@ AutomationConfig {
822
833
 
823
834
  ### Message Flow
824
835
  - Text: authorize -> route -> format -> instructionFilePreFlight -> bridge.sendMessage -> watchActivity
825
- - Voice: OGG -> Whisper STT -> text with [Telegram/Voice] header -> instructionFilePreFlight -> bridge
836
+ - Voice: OGG -> STT (OpenAI Whisper API or local whisper.cpp) -> text with [Telegram/Voice] header -> instructionFilePreFlight -> bridge
826
837
  - Photo: batch by media_group_id (2s) -> bridge.sendImage -> [Screenshot: ...] -> instructionFilePreFlight -> bridge
827
838
  - Outbound: cli.ts send -> POST /send or /voice -> channel
828
839
 
@@ -871,7 +882,13 @@ AutomationConfig {
871
882
  - Quick command callback (`qc_` prefix): inline button -> `executeQuickCommand()` -> resolves prompt -> sends to bridge
872
883
 
873
884
  ### Voice
874
- - STT: OGG -> Whisper v1 -> text
885
+ - **STT backend selection**: `STT_BACKEND` env var — `openai` (default) or `local`
886
+ - **OpenAI path**: OGG -> OpenAI Whisper v1 API -> text (requires `OPENAI_API_KEY`)
887
+ - **Local whisper.cpp path**: OGG -> ffmpeg (16kHz mono WAV) -> whisper-cli -> text (requires `WHISPER_CLI_PATH`, `WHISPER_MODEL_PATH`; 120s timeout)
888
+ - `stt.ts` exports: `transcribeAudio(filePath, SttConfig)`, `validateSttConfig(SttConfig)` — routes to `transcribeOpenAI()` or `transcribeLocal()` internally
889
+ - `SttConfig { backend, openaiApiKey, whisperCliPath, whisperModelPath }` — validated before transcription; errors surfaced to user
890
+ - `VoiceConfig` (types.ts): added `sttBackend`, `whisperCliPath`, `whisperModelPath` fields
891
+ - Startup log shows backend-specific STT status (local: validates CLI/model paths; openai: checks API key)
875
892
  - TTS: ElevenLabs v3 (eleven_v3, stability=0.5, similarity=0.75) -> MP3 -> ffmpeg libopus -> OGG
876
893
  - Search: /v2/voices + /v1/shared-voices parallel
877
894
 
@@ -912,13 +929,13 @@ AutomationConfig {
912
929
  | messaging/src/state.ts | Navigation, voice, mode, pending instruction file state |
913
930
  | messaging/src/bridge-client.ts | Sessions, activity, checkInstructionFile, ensureSession, getProjectSessions |
914
931
  | messaging/src/channels/telegram.ts | Polling, keyboards |
915
- | messaging/src/stt.ts | Whisper STT |
932
+ | messaging/src/stt.ts | Dual-backend STT: OpenAI Whisper API or local whisper.cpp, SttConfig, validateSttConfig |
916
933
  | messaging/src/tts.ts | ElevenLabs TTS |
917
934
  | messaging/src/voices.ts | Voice search (personal + shared) |
918
935
  | messaging/src/sly-action-filter.ts | Action scanning from store/actions/*.md, filtering, template resolution |
919
936
  | messaging/src/kanban-client.ts | Board loading |
920
937
  | messaging/src/cli.ts | Send messages |
921
- | messaging/src/types.ts | All shared types (Channel, SlyActionConfig, InstructionFileCheck, PendingInstructionFileConfirm, BridgeCreateSessionRequest, BridgeSessionInfo) |
938
+ | messaging/src/types.ts | All shared types (Channel, VoiceConfig, SlyActionConfig, InstructionFileCheck, PendingInstructionFileConfirm, BridgeCreateSessionRequest, BridgeSessionInfo) |
922
939
  | documentation/features/049_per_card_provider_selection.md | Per-card provider selection feature spec |
923
940
 
924
941
  ---
@@ -927,6 +944,7 @@ AutomationConfig {
927
944
 
928
945
  ### CLI (packages/slycode/)
929
946
  - Entry: bin/slycode.js (Node v20+); 9 lazy-loaded subcommands
947
+ - Package metadata: author `Greg Atkins <support@slycode.ai>`, license BUSL-1.1, repo `slycode-ai/slycode`; both packages publish author, repository, homepage, bugs fields
930
948
 
931
949
  ### Commands
932
950
  | Command | Key Logic |
@@ -954,9 +972,10 @@ AutomationConfig {
954
972
 
955
973
  ### Create-SlyCode
956
974
  - `npx create-slycode [dir] [--yes]`
957
- - Setup wizard: network binding (localhost vs 0.0.0.0), ports, Telegram token/userId, voice keys (OpenAI/ElevenLabs), system service
975
+ - Setup wizard: timezone (auto-detects via `Intl.DateTimeFormat`, writes `TZ=` to .env for cron scheduling), network binding (localhost vs 0.0.0.0), ports, Telegram token/userId, voice keys (OpenAI/ElevenLabs), system service
958
976
  - Existing workspace detection: warns if ~/.slycode/config.json points elsewhere; offers continue or cancel
959
- - Creates: package.json, slycode.config.js, .env (commented sections), .gitignore
977
+ - Creates: package.json, slycode.config.js, .env (sections: Timezone `TZ=`, Ports, Telegram, Voice STT/TTS), .gitignore
978
+ - `--yes` auto-accepts defaults: detected system timezone, host 0.0.0.0, ports 7591/2/3, no integrations, no service
960
979
  - Seeds: commands.json (empty), registry.json (single tutorial project), providers.json from package templates
961
980
  - **Actions now individual MD files**: `deployStoreActions()` copies `store/actions/*.md` from package templates (replaces old sly-actions.json seeding); each action is a standalone markdown file with YAML frontmatter + prompt body
962
981
  - Kanban seed: `{project_id: 'slycode', stages: {backlog:[], design:[], ...}, last_updated}` (overwritten by tutorial seed if template available)
@@ -1006,7 +1025,9 @@ AutomationConfig {
1006
1025
  | packages/slycode/src/cli/workspace.ts | Workspace resolution, config loading |
1007
1026
  | packages/slycode/src/cli/service.ts | Platform services |
1008
1027
  | packages/slycode/src/cli/uninstall.ts | Clean removal |
1009
- | packages/create-slycode/src/index.ts | Scaffold wizard; deploys store actions as individual MD files |
1028
+ | packages/create-slycode/src/index.ts | Scaffold wizard; timezone prompt, deploys store actions as individual MD files |
1029
+ | packages/create-slycode/package.json | Package metadata: author, repository (directory: packages/create-slycode), homepage, bugs |
1030
+ | packages/slycode/package.json | Package metadata: author, repository, homepage, bugs |
1010
1031
  | packages/slycode/templates/CLAUDE.md | Workspace CLAUDE.md (tutorial mode section) |
1011
1032
  | packages/slycode/templates/store/actions/*.md | Action prompt templates (individual MD files with YAML frontmatter) |
1012
1033
  | packages/slycode/templates/tutorial-project/ | Tutorial content template |
@@ -1038,8 +1059,8 @@ AutomationConfig {
1038
1059
  | reference-fetch | 1.1.1 | Doc retrieval |
1039
1060
  | doc-discovery | 1.0.1 | Doc gap analysis |
1040
1061
  | doc-update | 1.0.1 | Doc maintenance |
1041
- | claude-code-docs-maintainer | 1.0.1 | Claude Code docs |
1042
- | convert-asset | 1.0.0 | Cross-provider conversion |
1062
+ | claude-code-docs-maintainer | 1.0.1 | Claude Code docs; references SlyCode repository (was ClaudeMaster); relative doc paths |
1063
+ | convert-asset | 1.0.0 | Cross-provider conversion; scope now global (was project-specific) |
1043
1064
  | create-command | 1.0.1 | Slash commands |
1044
1065
  | problem_summary | 1.0.1 | Issue summary |
1045
1066
 
@@ -1071,21 +1092,22 @@ AutomationConfig {
1071
1092
  ### Terminal Actions (Markdown Format, 26 Commands)
1072
1093
  - **Migration from JSON to markdown**: `data/sly-actions.json` archived to `data/archive/sly-actions.json.archived`; conversion script `scripts/convert-actions-to-md.js` (one-time)
1073
1094
  - **Format**: individual `store/actions/<name>.md` files with YAML frontmatter + prompt body (see action-assistant-context.md for full spec)
1074
- - **Frontmatter fields**: name, version, label, description, group, placement, scope, projects, cardTypes, classes (map of terminal-class -> sort priority)
1095
+ - **Frontmatter fields**: name, version, label, description, group, placement, scope (global or specific), projects, cardTypes, classes (map of terminal-class -> sort priority)
1075
1096
  - **Scanning**: both web (`action-scanner.ts`) and messaging (`sly-action-filter.ts`) scan `store/actions/*.md` independently; both parse YAML frontmatter with lightweight parsers (no YAML lib); both use 30s in-memory cache
1076
1097
  - **Class assignments**: derived from per-action `classes` map (reverse of old top-level `classAssignments` array); priority numbers with gaps of 10 for insertion; ties broken alphabetically
1077
1098
  - Placement: startup, toolbar, both
1078
- - Groups (5): Card Actions (14), Session (1), Project (4), Utilities (5), Action Assistant (1)
1099
+ - Groups (5): Card Actions (14), Session (2), Project (4), Utilities (5), Action Assistant (1)
1079
1100
  - Classes (9): global-terminal, project-terminal, backlog, design, implementation, testing, done, automation, action-assistant
1080
1101
  - Templates: `{{var}}` mustache-style (cardContext, projectContext, globalContext context blocks + field-level card/project/stage/projectPath)
1081
1102
  - Context injection is opt-in: actions must include `{{cardContext}}` etc. in prompt body
1082
1103
  - MAX_VISIBLE_ACTIONS=6; Shift+click inserts without submit
1083
1104
  - All command prompts use `sly-kanban` CLI (not `node scripts/kanban.js`)
1084
1105
  - `data/action-assistant-context.md`: comprehensive reference for the action assistant (format spec, template variables, workflow diagram, common mistakes, learned patterns)
1106
+ - **convert-asset**: scope changed from `specific` (claude-master only) to `global` — available in all workspaces
1085
1107
 
1086
1108
  ### Terminal Action Commands
1087
1109
  - **Card Actions** (14): onboard, design-requirements, deep-design, make-feature, implement, quick-fix, debug, complete, review, approve, archive, chore, analyse-implementation, test-review
1088
- - **Session** (1): summarize
1110
+ - **Session** (2): summarize, continue
1089
1111
  - **Project** (4): explore, create-card, update-priming, organise-backlog
1090
1112
  - **Utilities** (5): clear, checkpoint, context, show-card, convert-asset
1091
1113
  - **Action Assistant** (1): configure-commands
@@ -1100,9 +1122,11 @@ AutomationConfig {
1100
1122
 
1101
1123
  ### Store (Canonical Flat)
1102
1124
  - store/skills/ (17 dirs, includes dummy), store/actions/ (26 .md files), store/agents/, store/mcp/, store/.backups/
1125
+ - **Renaming**: all store assets updated from "ClaudeMaster" to "SlyCode" references (skills, backups, area refs); doc paths normalized to relative (was Windows absolute in claude-code-docs-maintainer)
1126
+ - Store skills include full reference subdirectories: `store/skills/context-priming/references/references/areas/{skills,scripts-deployment}.md` (distributed to new workspaces); `updates/skills/` mirrors same structure
1103
1127
  - Update flow: updates/ -> accept -> backup -> overwrite store/ -> deploy
1104
1128
  - Template skill versions (in updates/): context-priming v1.1.8, kanban v1.4.0, chore v1.1.1 (all include `provider: claude` frontmatter)
1105
- - Manifest: 7 skills (context-priming, checkpoint, feature, implement, design, kanban, messaging)
1129
+ - Manifest: 8 skills (context-priming, checkpoint, chore, feature, implement, design, kanban, messaging)
1106
1130
  - Ignored: store/.ignored-updates.json (tracks both skills and actions by content hash)
1107
1131
  - Hook: useSlyActionsConfig.ts (renamed from useCommandsConfig.ts)
1108
1132
  - **Import preview**: `GET /api/cli-assets/store/preview` lists all files in a skill directory before import (params: provider, assetType, assetName, sourceProjectId); returns `{ files: string[], isDirectory: boolean }`
@@ -1128,6 +1152,8 @@ provider (claude|codex|gemini), name, version (semver), updated (YYYY-MM-DD), de
1128
1152
  | .claude/skills/context-priming/references/area-index.md | Area index (7 areas, load-when triggers, notes) |
1129
1153
  | .claude/skills/context-priming/references/areas/*.md | Deep reference per area |
1130
1154
  | .claude/skills/context-priming/references/maintenance.md | Defrag, pruning, area separation doctrine |
1155
+ | store/skills/claude-code-docs-maintainer/SKILL.md | Claude Code docs skill (SlyCode refs, relative paths) |
1156
+ | store/skills/context-priming/references/ | Store copy of context-priming area refs (SlyCode-renamed) |
1131
1157
  | store/actions/*.md | Individual action files (26), YAML frontmatter + prompt body |
1132
1158
  | data/action-assistant-context.md | Action assistant reference (format spec, template variables, workflow, learned patterns) |
1133
1159
  | data/archive/sly-actions.json.archived | Archived legacy JSON format (migrated to store/actions/*.md) |