refactor: remove User Stories 4 and 5 from specification

Removed User Stories 4 (Vault Navigation) and 5 (Advanced Features)
from the project scope to focus on core functionality:

Scope Changes:
- spec.md: Removed US4 and US5 user stories and acceptance scenarios
- spec.md: Removed FR-008 through FR-015 (daily notes, templates,
  bookmarks, plugins, themes, file/folder listing)
- spec.md: Renumbered remaining FRs sequentially (FR-009 through FR-019)
- spec.md: Updated success criteria SC-006 to reflect targeted scope
- tasks.md: Removed Phase 6 (US4, 18 tasks) and Phase 7 (US5, 67 tasks)
- tasks.md: Renamed Phase 8 to Phase 6 (Polish)
- tasks.md: Updated tool counts from 95 to 20 tools
- tasks.md: Updated total tasks from 165 to 98 tasks

Remaining Scope (3 User Stories):
- US1 (P1): File Operations - 9 tools  Complete
- US2 (P2): Search & Discovery - 11 tools  Complete
- US3 (P3): Task & Property Management - 18 tasks pending

Rationale:
- Focus on foundational workflows (file operations, search, tasks)
- Reduce complexity and maintenance surface area
- Ship a solid core feature set rather than comprehensive coverage
- US4/US5 can be added later if needed

Impact:
- Reduced task count by 67 tasks (40% reduction)
- Simplified dependency tree (3 user stories vs 5)
- Faster path to production-ready bundle
- Clearer MVP definition

Files changed:
- specs/001-obsidian-mcp-bundle/spec.md
- specs/001-obsidian-mcp-bundle/tasks.md

Build:  (no code changes, spec only)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-22 12:53:17 -05:00
parent afefdc9f92
commit 784dbe7a3e
2 changed files with 25 additions and 184 deletions

View File

@@ -67,47 +67,13 @@ AI assistants can create, toggle, and query tasks across the vault, manage note
---
### User Story 4 - Vault Navigation and Info (Priority: P4)
AI assistants can list files and folders, show vault statistics, open specific notes, and provide information about the vault structure, helping users understand and navigate their knowledge base.
**Why this priority**: Utility features that enhance user experience but aren't essential for core workflows.
**Independent Test**: Ask the AI "how many notes do I have?", "list files in my Projects folder", or "open my weekly review note" and verify accurate responses.
**Acceptance Scenarios**:
1. **Given** a user wants vault statistics, **When** they ask "how big is my vault?", **Then** the AI returns file count, folder count, and total size
2. **Given** a folder contains notes, **When** the user asks "what's in my Archive folder?", **Then** the AI lists all files in that directory
3. **Given** the user wants to open a note, **When** they say "open my project roadmap", **Then** Obsidian opens the specified note
4. **Given** the user wants recent activity, **When** they ask "what notes did I open recently?", **Then** the AI returns the recent files list
---
### User Story 5 - Advanced Features (Priority: P5)
AI assistants can work with templates, daily notes, bookmarks, plugins, themes, and Obsidian-specific features, providing power users with comprehensive CLI access through natural language.
**Why this priority**: Serves power users and advanced workflows but not critical for initial adoption.
**Independent Test**: Ask the AI "insert my meeting template", "list enabled plugins", or "what's my active theme?" and verify correct execution.
**Acceptance Scenarios**:
1. **Given** templates exist, **When** the user says "insert my standup template", **Then** the template content is inserted into the active file
2. **Given** the user manages plugins, **When** they ask "what plugins are enabled?", **Then** the AI returns the list of active plugins
3. **Given** a user wants bookmark management, **When** they say "bookmark this search query", **Then** a bookmark is created
4. **Given** the user tracks file history, **When** they ask "show versions of this note", **Then** the AI lists available file history versions
---
### Edge Cases
- **Ambiguous note names**: When multiple notes with the same name exist in different folders, the system MUST return an error listing all matching paths and require the user to specify the exact path to disambiguate
- **Obsidian not running**: When Obsidian application is not running, the system MUST immediately return a clear error message instructing the user to start Obsidian before retrying the operation
- **Concurrent edits**: When AI modifies a file that the user is actively editing, the system MUST save immediately and rely on Obsidian's built-in conflict detection to prompt the user if a conflict occurs
- **File doesn't exist**: When a user requests an operation on a file that doesn't exist, the system MUST return a structured error with `code: "FILE_NOT_FOUND"` and include the requested path in the message (e.g., "Note 'ideas.md' not found in vault 'MyVault'")
- **CLI error communication**: All errors from Obsidian CLI MUST be captured via stderr, mapped to MCP error codes (see FR-017), and returned with actionable messages that do not leak sensitive information
- **CLI error communication**: All errors from Obsidian CLI MUST be captured via stderr, mapped to MCP error codes (see FR-011), and returned with actionable messages that do not leak sensitive information
- **Vault sync paused**: When vault sync is paused and an operation is attempted, the system MUST allow the operation to proceed (sync status does not block local file operations) but log a warning if the operation modifies files
- **Special characters in note names**: The system MUST pass note names to Obsidian CLI without modification, allowing Obsidian to handle special character validation according to its own rules (fail-fast if CLI rejects)
- **Invalid vault name**: When user configuration specifies a vault that doesn't exist, the system MUST return error `code: "VAULT_NOT_FOUND"` during the first operation attempt with message listing available vaults from `obsidian vault list`
@@ -123,24 +89,18 @@ AI assistants can work with templates, daily notes, bookmarks, plugins, themes,
- **FR-005**: Bundle MUST provide backlinks, links, and unresolved links queries
- **FR-006**: Bundle MUST support task operations (list, toggle, mark done/todo)
- **FR-007**: Bundle MUST handle property management (read, set, remove, list properties)
- **FR-008**: Bundle MUST support daily note operations (open, append, prepend, read)
- **FR-009**: Bundle MUST provide tag and alias listing with optional counts
- **FR-010**: Bundle MUST support file and folder listing with filtering options
- **FR-011**: Bundle MUST handle template operations (list, read, insert)
- **FR-012**: Bundle MUST provide bookmark management (create, list)
- **FR-013**: Bundle MUST expose plugin information (list, enabled status)
- **FR-014**: Bundle MUST support theme queries (active theme, list themes)
- **FR-015**: Bundle MUST validate all user inputs before passing to Obsidian CLI
- **FR-016**: Bundle MUST return structured JSON responses for all tool calls
- **FR-017**: Bundle MUST handle errors gracefully and return actionable error messages; when Obsidian is not running, MUST instruct user to start application
- **FR-018**: Bundle MUST use timeout limits for all CLI command executions (default 30 seconds)
- **FR-019**: Bundle MUST support file resolution by name (wikilink-style) and exact path; when multiple files match a name, MUST return error with all matching paths
- **FR-020**: Bundle MUST log debugging information to stderr only (never stdout); logs MUST include operation type, sanitized parameters (removing sensitive data like vault paths and note content), timestamp, and success/failure status
- **FR-021**: Bundle MUST include valid manifest.json conforming to MCPB spec v0.3
- **FR-022**: Bundle MUST declare required vault directory in user_config
- **FR-023**: Bundle MUST include tool descriptions that accurately reflect Obsidian CLI capabilities
- **FR-024**: Bundle MUST handle optional parameters with sensible defaults
- **FR-025**: Bundle MUST support output format options where Obsidian CLI provides them (json, tsv, csv)
- **FR-008**: Bundle MUST provide tag and alias listing with optional counts
- **FR-009**: Bundle MUST validate all user inputs before passing to Obsidian CLI
- **FR-010**: Bundle MUST return structured JSON responses for all tool calls
- **FR-011**: Bundle MUST handle errors gracefully and return actionable error messages; when Obsidian is not running, MUST instruct user to start application
- **FR-012**: Bundle MUST use timeout limits for all CLI command executions (default 30 seconds)
- **FR-013**: Bundle MUST support file resolution by name (wikilink-style) and exact path; when multiple files match a name, MUST return error with all matching paths
- **FR-014**: Bundle MUST log debugging information to stderr only (never stdout); logs MUST include operation type, sanitized parameters (removing sensitive data like vault paths and note content), timestamp, and success/failure status
- **FR-015**: Bundle MUST include valid manifest.json conforming to MCPB spec v0.3
- **FR-016**: Bundle MUST declare required vault directory in user_config
- **FR-017**: Bundle MUST include tool descriptions that accurately reflect Obsidian CLI capabilities
- **FR-018**: Bundle MUST handle optional parameters with sensible defaults
- **FR-019**: Bundle MUST support output format options where Obsidian CLI provides them (json, tsv, csv)
### Key Entities
@@ -162,7 +122,7 @@ AI assistants can work with templates, daily notes, bookmarks, plugins, themes,
- **SC-003**: All tool calls return structured responses that AI models can reliably parse (100% JSON validity)
- **SC-004**: Error messages enable users to self-resolve issues in 90% of common failure scenarios (missing note, invalid vault, command timeout)
- **SC-005**: Bundle installs successfully via single-click in Claude Desktop without requiring manual configuration beyond vault selection
- **SC-006**: 95% of Obsidian CLI commands have corresponding MCP tools with accurate parameter mapping
- **SC-006**: All implemented Obsidian CLI commands have corresponding MCP tools with accurate parameter mapping
- **SC-007**: Tool descriptions are clear enough that AI assistants select the correct tool on first attempt for common requests (measured by user satisfaction)
- **SC-008**: Bundle works consistently across all platforms where Obsidian CLI is available (macOS, Windows, Linux)