From shelf
Read and process feedback from the Obsidian project dashboard. Displays items with suggested actions, then archives them to the Feedback Log with timestamps. Run at session start to pick up notes left in Obsidian.
How this skill is triggered — by the user, by Claude, or both
Slash command
/shelf:shelf-feedbackThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Surface any feedback notes left in the Obsidian project dashboard's `## Feedback` section. Display each item with a suggested action, then archive processed items to `## Feedback Log` with a timestamp.
Surface any feedback notes left in the Obsidian project dashboard's ## Feedback section. Display each item with a suggested action, then archive processed items to ## Feedback Log with a timestamp.
$ARGUMENTS
No arguments required.
Determine the project slug and base path. Priority order: explicit argument > .shelf-config > git remote defaults.
.shelf-config exists in the repo root:
a. Parse it: skip lines starting with # (comments) and blank lines; split each remaining line on the first = to get key and value; trim whitespace from both
b. Extract base_path and slug values
c. If both are present and non-empty: use them as $BASE_PATH and $SLUG — do NOT derive from git remote or prompt the user (FR-006). Skip to substep 4
d. If either is missing or empty: warn ".shelf-config is malformed — missing {key}. Falling back to defaults." and continue to substep 2.shelf-config:
a. If the user provided a project name as an argument: use it as $SLUG
b. Otherwise: run git remote get-url origin and extract the repo name (last path segment, strip .git suffix) as $SLUG
c. Set $BASE_PATH = "projects" (default){$BASE_PATH}/{$SLUG}/...mcp__obsidian-projects__read_file({ path: "{base_path}/{slug}/{slug}.md" })
/shelf-create first" and STOP (FR-022)Store the full dashboard content for later update.
Parse the dashboard content and extract everything between ## Feedback and the next ## heading (which should be ## Feedback Log).
- (a markdown list item)If no feedback items found:
For each feedback item, categorize it and suggest an action:
| Pattern | Category | Suggested Action |
|---|---|---|
| Contains "fix", "bug", "broken", "error" | Fix request | "Run /fix {issue} or /shelf-sync to track as an issue" |
| Contains "add", "feature", "want", "need" | Feature request | "Consider adding to backlog via /report-issue" |
| Contains "scope", "plan", "rethink", "consider" | Planning note | "Note for next /specify or /plan session" |
| Contains "urgent", "asap", "blocker" | Urgent | "Priority item — address before continuing" |
| Other | General note | "Informational — noted for this session" |
Display format:
## Feedback from Obsidian
1. **{category}**: {feedback text}
Suggested action: {action}
2. **{category}**: {feedback text}
Suggested action: {action}
...
After displaying all items, move them from ## Feedback to ## Feedback Log:
[YYYY-MM-DD HH:MM]- [YYYY-MM-DD HH:MM] {item text}## Feedback section (leave the heading, remove all items)## Feedback Log sectionproject: "[[{slug}]]" backlink and tags: in frontmatter (FR-005) — do not remove these fields when rewritingmcp__obsidian-projects__update_file({
path: "{base_path}/{slug}/{slug}.md",
content: "{rebuilt dashboard with feedback archived}"
})
If MCP fails: warn "Could not archive feedback — items will reappear next time" (NFR-004)
Processed {N} feedback item(s).
Archived to Feedback Log with timestamp [{YYYY-MM-DD HH:MM}].
{if any urgent items: "URGENT items noted above — address before continuing."}
npx claudepluginhub yoshisada/ai-repo-template --plugin shelfSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.