rename .story_kit directory to .storkit and update all references

Renames the config directory and updates 514 references across 42 Rust
source files, plus CLAUDE.md, .gitignore, Makefile, script/release,
and .mcp.json files. All 1205 tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dave
2026-03-20 11:34:53 +00:00
parent 375277f86e
commit 9581e5d51a
406 changed files with 531 additions and 530 deletions

View File

View File

@@ -0,0 +1,52 @@
---
name: "Consolidate chat transports into a chat module with transport submodules"
---
# Refactor 330: Consolidate chat transports into a chat module with transport submodules
## Current State
- TBD
## Desired State
The chat/transport code is scattered across the codebase: transport.rs at the top level, matrix/ as a module with transport-agnostic command logic baked in, whatsapp.rs and slack.rs as top-level files. Consolidate into a unified chat/ module where common code lives at the top level and only transport-specific details live in submodules.
Target structure:
```
server/src/chat/
├── mod.rs — ChatTransport trait, shared types, re-exports
├── commands/ — command registry and handlers (moved OUT of matrix/)
│ ├── mod.rs — BotCommand, CommandContext, CommandDispatch, try_handle_command
│ ├── status.rs — handle_status, build_pipeline_status
│ ├── cost.rs — handle_cost
│ ├── help.rs — handle_help
│ ├── git.rs — handle_git
│ ├── show.rs — handle_show
│ ├── overview.rs — handle_overview
│ ├── ambient.rs — handle_ambient
│ └── delete.rs — handle_delete
├── htop.rs — htop dashboard logic (moved OUT of matrix/ — works on any transport)
├── matrix/ — Matrix-specific: bot.rs, transport_impl.rs, config, notifications
├── whatsapp.rs — WhatsApp-specific: webhook, transport impl, 24h window
└── slack.rs — Slack-specific: webhook, transport impl, slash commands
```
The key insight: commands/, htop, and the ChatTransport trait are transport-agnostic. They currently live inside matrix/ but have nothing to do with Matrix. Only the actual Matrix SDK calls (sending messages, typing indicators, message editing, E2E encryption) are Matrix-specific.
## Acceptance Criteria
- [ ] transport.rs moved into chat/mod.rs (ChatTransport trait and shared types)
- [ ] commands/ moved from matrix/commands/ to chat/commands/ — no Matrix imports in command handlers
- [ ] htop.rs moved from matrix/htop.rs to chat/htop.rs — uses ChatTransport trait, not Matrix types
- [ ] whatsapp.rs moved to chat/whatsapp.rs
- [ ] slack.rs moved to chat/slack.rs
- [ ] matrix/ moved to chat/matrix/ — only contains Matrix-specific code (bot message handler, SDK calls, transport_impl, config)
- [ ] matrix/bot.rs no longer contains command dispatch logic — delegates to chat/commands/
- [ ] All imports updated throughout the codebase
- [ ] All existing tests pass
- [ ] No public API changes from the perspective of main.rs and other modules
## Out of Scope
- TBD

View File

@@ -0,0 +1,23 @@
---
name: "Bot start command to start a coder on a story"
---
# Story 331: Bot start command to start a coder on a story
## User Story
As a project owner in a chat room, I want to type "{bot_name} start {story_number}" to start a coder on a story, so that I can kick off work without needing the MCP tools or web UI.
## Acceptance Criteria
- [ ] '{bot_name} start {number}' finds the story and starts the default coder agent on it
- [ ] '{bot_name} start {number} opus' starts coder-opus specifically
- [ ] Returns confirmation with agent name and story title
- [ ] Returns error if story not found or all coders busy
- [ ] Moves story from backlog to current if needed
- [ ] Registered in the command registry so it appears in help output
- [ ] Handled at bot level without LLM invocation
## Out of Scope
- TBD

View File

@@ -0,0 +1,24 @@
---
name: "Bot assign command to assign a specific agent to a story"
---
# Story 332: Bot assign command to assign a specific agent to a story
## User Story
As a project owner in a chat room, I want to type "{bot_name} assign {story_number} {agent_name}" to assign a specific agent to a story, so that I can control which agent works on which story from chat.
## Acceptance Criteria
- [ ] '{bot_name} assign {number} {agent}' assigns the specified agent to the story (e.g. 'timmy assign 315 coder-opus')
- [ ] Stops any currently running agent on that story before assigning the new one
- [ ] Updates the story's front matter with agent: {agent_name}
- [ ] Starts the agent immediately
- [ ] Returns confirmation with agent name and story title
- [ ] Returns error if agent name is not valid or story not found
- [ ] Registered in the command registry so it appears in help output
- [ ] Handled at bot level without LLM invocation
## Out of Scope
- TBD

View File

@@ -0,0 +1,21 @@
---
name: "Bot stop command to stop an agent on a story"
---
# Story 333: Bot stop command to stop an agent on a story
## User Story
As a project owner in a chat room, I want to type "{bot_name} stop {story_number}" to stop the running agent on a story, so that I can halt work from chat without MCP tools.
## Acceptance Criteria
- [ ] '{bot_name} stop {number}' stops the running agent on that story
- [ ] Returns confirmation with agent name, story title, and what stage it was in
- [ ] Returns friendly message if no agent is running on that story
- [ ] Registered in the command registry so it appears in help output
- [ ] Handled at bot level without LLM invocation
## Out of Scope
- TBD

View File

@@ -0,0 +1,22 @@
---
name: "Bot move command to move stories between pipeline stages"
---
# Story 334: Bot move command to move stories between pipeline stages
## User Story
As a project owner in a chat room, I want to type "{bot_name} move {story_number} {stage}" to move a story between pipeline stages, so that I can manage the pipeline from chat.
## Acceptance Criteria
- [ ] '{bot_name} move {number} {stage}' moves the story to the specified stage (backlog, current, done)
- [ ] Uses the existing move_story MCP tool under the hood
- [ ] Returns confirmation with story title, old stage, and new stage
- [ ] Returns error if story not found or invalid stage
- [ ] Registered in the command registry so it appears in help output
- [ ] Handled at bot level without LLM invocation
## Out of Scope
- TBD

View File

@@ -0,0 +1,20 @@
---
name: "Bot rebuild command to trigger server rebuild and restart"
---
# Story 335: Bot rebuild command to trigger server rebuild and restart
## User Story
As a project owner in a chat room, I want to type "{bot_name} rebuild" to rebuild and restart the server, so that I can deploy changes from my phone without terminal access.
## Acceptance Criteria
- [ ] '{bot_name} rebuild' triggers the rebuild_and_restart MCP tool
- [ ] Bot sends a confirmation message before rebuilding
- [ ] Handled at bot level — intercepts the command before forwarding to LLM
- [ ] Registered in the command registry so it appears in help output
## Out of Scope
- TBD

View File

@@ -0,0 +1,21 @@
---
name: "Web UI button to start a coder on a story"
---
# Story 336: Web UI button to start a coder on a story
## User Story
As a project owner using the web UI, I want to click a button on a work item to start a coder on it, so that I can kick off work without using the terminal or chat bot.
## Acceptance Criteria
- [ ] Start button visible on work items in backlog and current stages
- [ ] Clicking start assigns the default coder and moves the story to current if needed
- [ ] Option to select a specific agent (dropdown: coder-1, coder-2, coder-opus)
- [ ] Button disabled when all coders are busy (shows tooltip explaining why)
- [ ] UI updates immediately to show the assigned agent
## Out of Scope
- TBD

View File

@@ -0,0 +1,20 @@
---
name: "Web UI button to stop an agent on a story"
---
# Story 337: Web UI button to stop an agent on a story
## User Story
As a project owner using the web UI, I want to click a button on a work item to stop its running agent, so that I can halt work without using the terminal or chat bot.
## Acceptance Criteria
- [ ] Stop button visible on work items that have a running agent
- [ ] Clicking stop kills the agent and shows confirmation
- [ ] Button only appears when an agent is actively running
- [ ] UI updates immediately to reflect the agent is stopped
## Out of Scope
- TBD

View File

@@ -0,0 +1,21 @@
---
name: "Web UI button to move stories between pipeline stages"
---
# Story 338: Web UI button to move stories between pipeline stages
## User Story
As a project owner using the web UI, I want to drag or click to move stories between pipeline stages, so that I can manage the pipeline visually.
## Acceptance Criteria
- [ ] Move buttons or dropdown on each work item to change stage (backlog, current, done)
- [ ] Uses the existing move_story MCP tool under the hood
- [ ] Shows confirmation with old and new stage
- [ ] UI updates immediately to reflect the move
- [ ] Prevents invalid moves (e.g. moving to QA or merge without an agent)
## Out of Scope
- TBD

View File

@@ -0,0 +1,21 @@
---
name: "Web UI agent assignment dropdown on work items"
---
# Story 339: Web UI agent assignment dropdown on work items
## User Story
As a project owner using the web UI, I want to select which agent to assign to a work item from a dropdown, so that I can control agent assignments visually.
## Acceptance Criteria
- [ ] Agent dropdown visible in expanded work item detail panel
- [ ] Shows available agents filtered by appropriate stage (coders for current, QA for qa, mergemaster for merge)
- [ ] Selecting an agent stops any current agent and starts the new one
- [ ] Updates the story front matter with the agent assignment
- [ ] Shows agent status (running, idle) in the dropdown
## Out of Scope
- TBD

View File

@@ -0,0 +1,21 @@
---
name: "Web UI rebuild and restart button"
---
# Story 340: Web UI rebuild and restart button
## User Story
As a project owner using the web UI, I want a rebuild and restart button, so that I can deploy changes without terminal access.
## Acceptance Criteria
- [ ] Rebuild button in the web UI header or settings area
- [ ] Shows confirmation dialog before triggering rebuild
- [ ] Triggers the rebuild_and_restart MCP tool
- [ ] Shows build progress or status indicator
- [ ] Handles reconnection after server restarts
## Out of Scope
- TBD

View File

@@ -0,0 +1,23 @@
---
name: "Web UI button to delete a story from the pipeline"
---
# Story 342: Web UI button to delete a story from the pipeline
## User Story
As a project owner using the web UI, I want a delete button on work items to remove them from the pipeline, so that I can clean up obsolete or duplicate stories visually.
## Acceptance Criteria
- [ ] Delete button visible on work items in all pipeline stages
- [ ] Shows confirmation dialog before deleting (story title shown for clarity)
- [ ] Stops any running agent on the story before deleting
- [ ] Removes the worktree if one exists
- [ ] Deletes the story file and commits to git
- [ ] UI updates immediately to remove the item from the board
- [ ] Uses an appropriate API endpoint (new or existing)
## Out of Scope
- TBD

View File

@@ -0,0 +1,22 @@
---
name: "MCP tools for file operations (read, write, edit, list)"
---
# Story 346: MCP tools for file operations (read, write, edit, list)
## User Story
As a non-Claude agent connected via MCP, I want file operation tools so that I can read, write, and edit code in my worktree.
## Acceptance Criteria
- [ ] read_file tool — reads file contents, supports offset/limit for large files
- [ ] write_file tool — writes/creates a file at a given path
- [ ] edit_file tool — replaces a string in a file (old_string/new_string like Claude Code's Edit)
- [ ] list_files tool — glob pattern matching to find files in the worktree
- [ ] All operations scoped to the agent's worktree path for safety
- [ ] Returns clear errors for missing files, permission issues, etc.
## Out of Scope
- TBD

View File

@@ -0,0 +1,22 @@
---
name: "MCP tool for shell command execution"
---
# Story 347: MCP tool for shell command execution
## User Story
As a non-Claude agent connected via MCP, I want a shell command tool so that I can run cargo build, npm test, and other commands in my worktree.
## Acceptance Criteria
- [ ] run_command tool — executes a bash command and returns stdout/stderr/exit_code
- [ ] Command runs in the agent's worktree directory
- [ ] Supports timeout parameter (default 120s, max 600s)
- [ ] Sandboxed to worktree — cannot cd outside or access host paths
- [ ] Returns streaming output for long-running commands
- [ ] Dangerous commands blocked (rm -rf /, etc.)
## Out of Scope
- TBD

View File

@@ -0,0 +1,22 @@
---
name: "Bot reset command to clear conversation context"
---
# Story 351: Bot reset command to clear conversation context
## User Story
As a project owner in a chat room, I want to type "{bot_name} reset" to drop the current Claude Code session and start fresh, so that I can reduce token usage when context gets bloated without restarting the server.
## Acceptance Criteria
- [ ] '{bot_name} reset' kills the current Claude Code session
- [ ] A new session starts immediately with clean context
- [ ] Memories persist via the file system (auto-memory directory is unchanged)
- [ ] Bot confirms the reset with a short message
- [ ] Registered in the command registry so it appears in help output
- [ ] Handled at bot level without LLM invocation
## Out of Scope
- TBD

View File

@@ -0,0 +1,30 @@
---
name: "Ambient on/off command not intercepted by bot after refactors"
---
# Bug 352: Ambient on/off command not intercepted by bot after refactors
## Description
The ambient on/off bot command stopped being intercepted by the bot after the recent refactors (328 split commands.rs into modules, 330 consolidated chat transports into chat/ module). Messages like "timmy ambient off", "ambient off", and "ambient on" are being forwarded to the LLM instead of being handled at the bot level. The ambient toggle was previously handled in bot.rs before the command registry dispatch — it may not have been properly wired up after the code was moved to the chat/ module structure.
## How to Reproduce
1. Type "timmy ambient off" in a Matrix room where ambient mode is on
2. Observe that the message is forwarded to Claude instead of being intercepted
3. Same for "timmy ambient on", "ambient off", "ambient on"
## Actual Result
Ambient toggle commands are forwarded to the LLM as regular messages.
## Expected Result
Ambient toggle commands should be intercepted at the bot level and toggle ambient mode without invoking the LLM, with a confirmation message sent directly.
## Acceptance Criteria
- [ ] 'timmy ambient on' toggles ambient mode on and sends confirmation without LLM invocation
- [ ] 'timmy ambient off' toggles ambient mode off and sends confirmation without LLM invocation
- [ ] Ambient toggle works after refactors 328 and 330
- [ ] Ambient state persists in bot.toml as before

View File

@@ -0,0 +1,19 @@
---
name: "Add party emoji to done stage notification messages"
---
# Story 353: Add party emoji to done stage notification messages
## User Story
As a project owner, I want to see a party emoji in the Matrix/chat notification when a story moves to done, so that completions feel celebratory.
## Acceptance Criteria
- [ ] Stage notification for done includes a party emoji (e.g. 🎉)
- [ ] Only the done stage gets the emoji — other stage transitions stay as they are
- [ ] Works across all chat transports (Matrix, WhatsApp, Slack)
## Out of Scope
- TBD