一键导入
shaping-journeys
List user canvases and shape common patterns into journey definitions. Use when consolidating user research into testable user flows.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
List user canvases and shape common patterns into journey definitions. Use when consolidating user research into testable user flows.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | shaping-journeys |
| description | List user canvases and shape common patterns into journey definitions. Use when consolidating user research into testable user flows. |
| user-invocable | true |
| allowed-tools | Read, Write, Glob, Grep, Edit |
Manage user canvases and shape common patterns into journey definitions for flow diagramming and testing.
/shape # List all canvases with status
/shape --run # Shape canvases into journeys
/shape --journey {id} # Show journey details
Before any mode executes, gather enriched signal data from all canvases.
For each canvas in grimoires/keeper/canvas/*.md:
Read existing sections:
## Journey Fragments (existing behavioral context)## Feedback Entries (from UI) (sentiment data from /synthesize-feedback)## Score Context (user position for weighting)Merge into unified signal list:
Weight patterns by Score Context:
| Signal Weight | Multiplier | Source |
|---|---|---|
| HIGH (top 1%, godfather/all_night tier) | 3x | Patterns from these users are prioritized in detection |
| MEDIUM (top 25%, devoted/regular tier) | 1x | Standard weight |
| LOW (below 25th percentile) | 0.5x | De-prioritized but not ignored |
Apply weight multiplier when counting pattern occurrences in Step 3 (Pattern Detection). A HIGH-weight user's feedback entry counts as 3 occurrences toward confidence thresholds.
When invoked without arguments, display canvas summary.
grimoires/keeper/canvas/*.md
Extract from each canvas:
┌─────────────────────────────────────────────────────────────────┐
│ LABORATORY CANVASES │
├─────────────────────────────────────────────────────────────────┤
│ │
│ User Status Quotes Goals Journeys │
│ ───────────── ─────── ────── ───── ───────── │
│ papa-flavio active 3 2 deposit-flow │
│ tchallason active 5 3 rewards-display │
│ testuser active 1 1 - │
│ │
│ Total: 3 canvases, 9 quotes, 6 goals │
│ │
│ Pending Synthesis: 1 canvas (testuser) │
│ │
└─────────────────────────────────────────────────────────────────┘
Next Steps:
- Add more feedback: /observe @{user} "quote"
- Shape journeys: /shape --run
- View journey: /shape --journey {journey-id}
--run)Extract patterns from canvases to create journey definitions.
Read all grimoires/keeper/canvas/*.md files.
Parse YAML frontmatter and markdown sections.
From each canvas, extract:
Before pattern detection, load domain vocabulary to prevent misinterpretation during synthesis:
grimoires/keeper/glossary.yamlterm field)meaning field as the canonical interpretationnot field to explicitly avoid the common misinterpretation[glossary: {term}] where relevantIdentify common patterns across canvases:
Grouping Rules:
Confidence Thresholds:
| Canvases | Confidence | Action |
|---|---|---|
| 1 | LOW | Flag for manual review |
| 2 | MEDIUM | Create draft journey |
| 3+ | HIGH | Create journey, auto-validate |
For MEDIUM/HIGH confidence patterns, create journey files:
Journey Template:
---
type: journey
id: {journey-id}
title: {Human Readable Title}
source_canvases: [{usernames}]
created: {timestamp}
updated: {timestamp}
status: draft
confidence: medium | high
---
# {Journey Title}
## Summary
{1-2 sentence description synthesized from goals}
---
## User Types
- **Primary**: {most common type from source canvases}
- **Secondary**: [{other types}]
---
## Steps
### Step 1: {Step Name}
- **Trigger**: {what initiates this step}
- **Action**: {what user does}
- **Expected**: {what should happen}
- **Selector**: {suggested data-testid or selector}
- **Potential Errors**:
- {error state from canvas gaps}
### Step 2: {Step Name}
...
---
## Success Condition
{What constitutes successful completion of this journey}
---
## Known Gaps
| Gap | Type | Source Canvas | Resolution |
|-----|------|---------------|------------|
| {gap} | {Bug/Feature/Discoverability} | {canvas} | {status} |
---
## Source Quotes
> "{quote}" — @{user}
Add journey link to each source canvas frontmatter:
linked_journeys:
- {journey-id}
After creating or updating journey files and updating source canvas frontmatter, re-wire all affected canvases to reflect the new journey membership:
# Re-wire all canvases and journeys to reflect updated source_canvases
bash scripts/observer/wire-obsidian-links.sh --canvases-journeys
# Verify consistency
bash scripts/observer/wire-obsidian-links.sh --canvases-journeys --verify
This ensures newly created journeys and their source canvases have bidirectional wiki-links. The --canvases-journeys mode is idempotent — safe to re-run.
Update grimoires/keeper/state.yaml:
active:
phase: synthesis
journeys:
{journey-id}:
status: draft
created: {timestamp}
source_canvases: [{users}]
queue:
pending_synthesis: [] # Clear processed
✓ Synthesis complete
Journeys Created:
- deposit-flow (HIGH confidence)
Sources: papa-flavio, tchallason
Steps: 4
Gaps: 2
- rewards-display (MEDIUM confidence)
Sources: tchallason
Steps: 3
Gaps: 1
Low Confidence (Manual Review):
- testuser canvas: 1 goal, no pattern match
Next Steps:
- View journey: /shape --journey deposit-flow
- Generate diagram: /diagram deposit-flow
- Add more feedback: /observe @testuser "..."
--journey {id})Display full journey details:
/shape --journey deposit-flow
Output:
┌─────────────────────────────────────────────────────────────────┐
│ JOURNEY: deposit-flow │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Status: draft │
│ Confidence: HIGH │
│ Sources: papa-flavio, tchallason │
│ │
│ Steps: │
│ 1. Open deposit modal (trigger: click deposit button) │
│ 2. Enter amount (action: input token amount) │
│ 3. Approve token (action: wallet approval) │
│ 4. Confirm deposit (action: execute deposit) │
│ │
│ Known Gaps: 2 │
│ - Approval stuck on some wallets (Bug) │
│ - No loading indicator during tx (Feature) │
│ │
└─────────────────────────────────────────────────────────────────┘
Actions:
- Generate diagram: /diagram deposit-flow
- Generate test: /validate deposit-flow
- Edit journey: Read grimoires/keeper/journeys/deposit-flow.md
Journey IDs are generated from goal patterns:
Examples:
deposit-stake-flowrewards-displayburn-planningCompare goals using semantic patterns:
Match Criteria:
When multiple canvases have journey fragments:
Before creating journey:
| Error | Resolution |
|---|---|
| No canvases found | Prompt to create with /observe |
| No patterns detected | List canvases, suggest manual journey |
| Journey ID collision | Append numeric suffix |
| Canvas parse error | Report, skip canvas |
/observe - Create canvases from quotes/diagram - Generate diagrams from journeys/validate - Generate tests from diagramsCapture point-in-time MER (MiDi Experience Record) for a wallet — data state, visual screenshot, perception context, and decision metadata.
Compare user expectations (UTCs) with code reality to identify gaps. Use when you need to understand discrepancies between what users expect and what code actually does.
Batch scan canvases for GAP sections, deduplicate, route to correct repos, draft issue bodies, and file confirmed issues.
Parallel multi-user processing using Claude Code native teams. Leader spawns workers per user, each runs /ingest-dm, leader aggregates for cross-canvas patterns.
Validate gap hypotheses by manually simulating features for individual users and measuring commitment, not satisfaction.
Automated end-to-end feedback pipeline that pulls new Supabase entries, enriches, classifies, routes to canvases, and generates a synthesis report.