smith-bank · git:20260420.e9b8065 · 2026-04-20 · sha256 d7bf0b26477e146b
smith-bank git:20260420.e9b8065A
Immutable. This exact content is served forever at /api/v1/blob/d7bf0b26477e146b.
--- name: smith-bank description: Captures ideas mid-conversation and stores them in the vault for later processing. Use when the user wants to save an idea, park a thought, or come back to something later. Supports listing, processing, editing, and prioritizing banked ideas. argument-hint: "[list|process|edit|remove|prioritize] [<id>] [--priority <level>] [--system <id>]" --- # Smith Idea Bank Capture ideas mid-conversation and store them in the vault for later processing. The bank is a section of the vault where ideas get deposited for safekeeping until you're ready to withdraw them. **Arguments:** $ARGUMENTS ## Vault Logging Log significant events to the vault session log. Read the session log path from `.smith/vault/.current-session`. If missing, skip logging silently. Append entries using this format: ``` ### [HH:MM:SS] /smith-bank <event> **User Request:** > <verbatim user message or idea description that triggered this action> **Action:** <banked|listed|processed|edited|removed|prioritized> **Bank ID:** <BANK-NNN> **Title:** <idea title> **Outcome:** <what happened> **Systems affected:** <system IDs> ``` ## Behavior ### No Arguments — Bank an Idea When invoked with no arguments (or via natural language trigger), capture the current conversation's idea: 1. **Analyze the conversation** to understand the idea being banked — what it is, how it came up, what problem it solves, and any initial requirements discussed 2. **Auto-detect systems** the idea would likely impact by scanning `.specify/systems/system-*/spec.md` descriptions against the idea content. Set `primary_system` and `also_affects`. 3. **Determine next bank ID** by scanning `.smith/vault/bank/` for existing files. Extract the highest `BANK-NNN` from frontmatter `id:` fields, then increment. Start at BANK-001 if none exist. 4. **Generate the bank file** at `.smith/vault/bank/YYYY-MM-DD_HHMMSS-<slug>.md` with this format: ```yaml --- id: BANK-NNN title: "<concise title>" created: "YYYY-MM-DDTHH:MM:SS" source_session: "<current session log filename>" primary_system: "<detected system or 'unassigned'>" also_affects: [] status: banked priority: medium --- # <Title> ## Origin <2-3 sentences describing the conversation context that led to this idea — what were we working on, what triggered the thought, why it seemed worth saving> ## Idea <Clear description of the feature or improvement, written with enough detail that someone reading this cold could understand what to build> ## Requirements (Draft) <Bullet points capturing any requirements that were discussed, even loosely. Include edge cases or constraints mentioned> ## Systems Affected - **Primary:** <system name and why> - **Also affects:** <other systems and why, or "none identified"> ## Open Questions <Any obvious questions that would need answering before this could be built. Pre-populate with the most important unknowns based on the conversation> ## Conversation Reference Session: <link to vault session log> Approximate timestamp: <when in the session this idea came up> ``` 5. **Confirm** to the user: "Banked as BANK-NNN: <title>. Resume anytime with `/smith-bank process BANK-NNN`." 6. **Return** to the original conversation without disruption — do NOT start any follow-up workflow. ### `list` — Show All Banked Ideas Display all banked ideas sorted by date descending. Read each `.md` file in `.smith/vault/bank/` (exclude `archive/` subdirectory), extract frontmatter fields. Format: ``` Bank Vault — N ideas deposited BANK-001 [medium] Trends article recommendation engine 2026-04-03 BANK-002 [high] Auto-generate component Storybook stories 2026-04-04 BANK-003 [medium] Email thread summarization endpoint 2026-04-05 ``` **Filters:** - `list --priority <level>` — filter by priority (critical, high, medium, low) - `list --system <system-id>` — filter by primary_system or also_affects containing the system ID If no ideas exist: "Bank vault is empty. Use `/smith-bank` to deposit your first idea." ### `process <id>` — Withdraw and Build Withdraws an idea from the bank and starts a `/smith-new` workflow: 1. **Read** the banked spec file matching the given ID (e.g., `BANK-001`) 2. **Update** the bank entry: set `status: in-progress`, add `processing_started: <timestamp>` and `feature_branch: <TBD>` to frontmatter 3. **Invoke `/smith-new`** with the idea description, draft requirements, systems affected, and open questions pre-loaded as the initial feature context. The user should NOT have to re-explain the idea. 4. When the `/smith-new` workflow completes: - If built and merged: update bank entry `status: completed`, add `completed: <timestamp>` and `feature_branch: <branch-name>` - If queued: update bank entry `status: queued` ### `edit <id>` — Edit a Banked Idea Open the banked idea file for the given ID. Read and display its current contents, then ask the user what they'd like to change. Support updating: - Title - Priority - Requirements - Open questions - Systems affected - Any free-form notes Write the updated file back after changes. ### `remove <id>` — Archive a Banked Idea 1. Find the bank file matching the given ID 2. **Ask for confirmation**: "Remove BANK-NNN: <title>? This moves it to the archive. (y/n)" 3. If confirmed: move the file to `.smith/vault/bank/archive/` (create directory if needed) 4. Confirm: "BANK-NNN archived." ### `prioritize <id> --priority <level>` — Change Priority Quick shorthand to change priority without the full edit flow. 1. Find the bank file matching the given ID 2. Update the `priority:` field in frontmatter to the new level 3. Valid levels: `critical`, `high`, `medium`, `low` 4. Confirm: "BANK-NNN priority updated to <level>." ## Implementation Notes - Bank files live in `.smith/vault/bank/`, archived files in `.smith/vault/bank/archive/` - Create `.smith/vault/bank/` if it doesn't exist on first use - ID matching: scan all `.md` files in `bank/` for frontmatter `id:` field matching the requested ID - Slug generation: lowercase the title, replace spaces with hyphens, remove special chars, truncate to 50 chars - This skill should be handled directly in the main session — never delegate to a sub-agent