Refactor workspace structure and documentation

- Deleted obsolete files: obsidian-vault.md, onboarding.md, workspace-model.md
- Updated opencode.json to remove references to deleted files.
- Revised profile.md to clarify the status of legacy paths and communication evidence.
- Adjusted prompts to reflect new file paths and improve clarity.
- Enhanced daily logs with focus, work-items, and blockers properties.
- Updated work-item notes to include systems, workstreams, people, and related properties.
- Improved context maintenance guidelines to ensure accurate and durable project knowledge.
- Refined base filters to exclude template files and ensure only relevant notes are displayed.
- Updated daily templates to ensure proper formatting and consistency.
- Modified workflows to align with the new vault structure and improve context synchronization.
This commit is contained in:
2026-04-16 16:28:30 -06:00
parent b82194bc55
commit 374991a568
148 changed files with 214 additions and 3576 deletions

View File

@@ -13,12 +13,17 @@ Behavior rules:
- Treat `core/` as the reusable project-independent operating model.
- Treat `profiles/fidelity/profile.md` as the active Fidelity project profile.
- Treat `vault/` as the canonical clean knowledge base for humans and AI.
- Treat `README.md`, `ai/context/`, `ai/state/`, `knowledge/`, and `ai/logs/` as legacy compatibility memory until the vault migration is fully retired.
- Treat `ai/inbox/` and generated connector files as raw evidence only, not promoted memory.
- Keep Obsidian Bases clean: do not let templates in `vault/09-templates/` appear as real daily notes, work items, people, decisions, systems, or workstreams.
- Role mapping notes such as `vault/04-people/manager.md` are `type: role-map`; actual people profiles are `type: person`.
- When editing canonical vault notes, update useful metadata at the same time: `updated`, `systems`, `workstreams`, `people`, `related`, `focus`, `work-items`, and `blockers` when applicable.
- Work item notes should preserve Jira ID/title and explicit relationships so standups, Bases, and graph navigation stay useful.
- Daily notes should include `focus`, `work-items`, and `blockers` when those values are clear.
- Before answering a prompt that depends on current state, verify the latest relevant files instead of relying only on conversation history.
- If the prompt asks for the latest Mattermost message, the last message from Jeff/current manager, or what someone just said, force a Mattermost refresh before answering and do not rely on stale inbox context.
- For any meaningful prompt, decide whether the interaction adds, corrects, or sharpens project memory.
- When the user provides new durable information, update the right workspace files before or while answering.
- When the user corrects how the workspace should behave, update the linked operational surface too: commands in `.opencode/commands/`, prompt templates in `prompts/`, agent rules in `ai/AGENTS.md` or `.opencode/agents/`, skills in `.opencode/skills/`, and vault process rules in `vault/03-context/process/` when those files control the behavior.
- When the user corrects how the workspace should behave, update the linked operational surface too: commands in `.opencode/commands/`, prompt templates in `prompts/`, agent rules in `AGENTS.md` or `.opencode/agents/`, skills in `.opencode/skills/`, and vault process rules in `vault/03-context/process/` when those files control the behavior.
- If existing context is stale, correct it directly instead of leaving conflicting versions.
- Promote information carefully:
- daily facts go to `vault/06-daily/YYYY-MM-DD.md`
@@ -33,9 +38,9 @@ Behavior rules:
- role-to-person mapping and recurring stakeholders go to `vault/04-people/`
- confirmed decisions go to `vault/05-decisions/`
- behavioral rules for how this workspace should respond go to the exact command, prompt, agent, skill, or vault process file that enforces that behavior
- Use generic `AIW_*` integration variables for new tooling and keep `FIDELITY_*` only as compatibility aliases.
- Use generic `AIW_*` integration variables for new tooling and keep `FIDELITY_*` only as Fidelity-profile aliases.
- Default to writing new same-day information to today's log unless a more durable destination is clearly better.
- If a canonical vault note exists, update it first; update legacy `ai/` or `knowledge/` files only when needed for compatibility.
- Write canonical memory to `vault/`.
- Update preexisting memory when a new prompt clarifies or corrects something already stored.
- Do not wait for a dedicated sync command if the correct memory update is already obvious.
- Do not leave behavior-only corrections only in daily logs. If a correction should affect future output, update the tool or instruction that produces that output.

View File

@@ -13,7 +13,9 @@ Behavior rules:
- Load `core/` first for project-independent operating rules.
- Load the active profile from `AIW_PROJECT_PROFILE` when available; otherwise use the configured project files in this workspace.
- Treat `vault/` as the canonical clean knowledge base.
- Treat `ai/context/`, `ai/state/`, `ai/work-items/`, `ai/logs/`, `knowledge/`, and profile files as compatibility memory unless no vault equivalent exists.
- Treat profile files as configuration and `ai/inbox/` plus generated connector files as raw evidence.
- Keep Obsidian Bases clean by excluding templates and typing role maps separately from people.
- When updating canonical vault notes, maintain relationship metadata and `updated` fields so the vault remains useful to both humans and agents.
- Before answering current-state questions, inspect current state, active work items, recent logs, and inbox evidence when available.
- For any meaningful prompt, decide whether it adds, corrects, or invalidates memory.
- Update the smallest correct canonical file when memory should change.
@@ -21,7 +23,7 @@ Behavior rules:
- Keep imported evidence separate from promoted memory.
- If an integration or sync command fails, do not update project memory from that failure.
- Do not promote tooling noise, empty syncs, dependency failures, or generic chat chatter unless the user explicitly asks to track tooling work.
- Prefer generic `AIW_*` integration variables and support project-specific aliases only as compatibility.
- Prefer generic `AIW_*` integration variables and support project-specific aliases only when declared by the active profile.
- When drafting communication, preserve technical meaning, state scope clearly, and write in natural professional English.
Memory destinations:

View File

@@ -8,18 +8,10 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@vault/03-context/process/ai-to-ai-prompting.md
@ai/context/index.md
@ai/context/project.md
@ai/context/process/ai-to-ai-prompting.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/communication-rules.md
Read active profile, if present:
@@ -27,7 +19,7 @@ Read active profile, if present:
Relevant active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
User request:

View File

@@ -10,10 +10,10 @@ Inputs:
- `$ARGUMENTS` may contain an export path, channel names, or date filters
- if no explicit path is given, use `AIW_SLACK_EXPORT_PATH` when available
- compatibility fallback: `FIDELITY_SLACK_EXPORT_PATH`
- Fidelity profile alias: `FIDELITY_SLACK_EXPORT_PATH`
- otherwise, if `archives/slack/export/` exists, use it as the default import source
- if no channels are specified, auto-detect channels using `AIW_CHANNEL_PREFIX`
- compatibility/default prefix: `fidelity`
- Fidelity default prefix: `fidelity`
Run the importer:
@@ -24,23 +24,12 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@core/integrations/communication-model.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@vault/03-context/process/context-maintenance.md
@vault/04-people/index.md
@vault/04-people/manager.md
@ai/context/index.md
@ai/context/project.md
@ai/context/process/context-maintenance.md
@ai/context/people/index.md
@ai/context/people/manager.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/agent-memory-rules.md
@knowledge/memory-promotion-rules.md
Imported summary, if present:
@@ -59,7 +48,7 @@ Instructions:
- avoid promoting outdated daily status unless it changes current understanding
- update existing memory when the archive clarifies or corrects it
- keep ambiguous or likely outdated facts as archive-only context
- write promoted memory to `vault/` first; use legacy `ai/*` only as compatibility fallback
- write promoted memory to `vault/`
Return:

View File

@@ -7,7 +7,7 @@ Use the configured live communication connector to fetch fresh evidence and main
Preferred command sources:
- `AIW_MATTERMOST_SYNC_CMD`
- compatibility fallback: `FIDELITY_MATTERMOST_SYNC_CMD`
- Fidelity profile alias: `FIDELITY_MATTERMOST_SYNC_CMD`
- workspace fallback: `bash scripts/mattermost/sync.sh`
Run the connector:
@@ -19,18 +19,10 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@core/integrations/communication-model.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@vault/03-context/process/context-maintenance.md
@ai/context/index.md
@ai/context/project.md
@ai/context/process/context-maintenance.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/memory-promotion-rules.md
Fresh communication evidence:
@@ -45,7 +37,6 @@ Instructions:
- update `vault/01-current/current-work.md` only for facts that materially change the active work window
- update `vault/02-work-items/*.md` for explicit work-item IDs, approved titles, points, scope, and status notes
- keep `vault/01-current/work-items.md` aligned as the compact summary of active work items
- use `ai/*` paths only as temporary compatibility fallback
- do not write tooling noise, sync status, or generic chat chatter into project memory
- if a fact is ambiguous, skip it rather than asking what to do

View File

@@ -9,7 +9,6 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@prompts/copilot-prompt.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@@ -18,16 +17,6 @@ Read:
@vault/03-context/ios/project-swift-guidance.md
@vault/03-context/systems/index.md
@vault/03-context/workstreams/index.md
@ai/context/process/ai-to-ai-prompting.md
@ai/context/index.md
@ai/context/project.md
@ai/context/ios/index.md
@ai/context/ios/project-swift-guidance.md
@ai/context/systems/index.md
@ai/context/workstreams/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
Active profile, if present:
@@ -35,7 +24,7 @@ Active profile, if present:
Detailed active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
User request:

View File

@@ -20,31 +20,13 @@ Use these files as the baseline context:
@vault/07-maps/people.md
@vault/03-context/project.md
@vault/03-context/process/communication.md
@vault/03-context/process/ai-to-ai-prompting.md
@vault/03-context/process/jira-story-rules.md
@vault/03-context/process/workspace-model.md
@vault/03-context/process/agent-memory-rules.md
@vault/03-context/process/memory-promotion-rules.md
@vault/04-people/manager.md
@vault/04-people/index.md
@ai/AGENTS.md
@ai/context/index.md
@ai/context/project.md
@ai/context/ios/index.md
@ai/context/ios/current-practices.md
@ai/context/ios/project-swift-guidance.md
@ai/context/systems/index.md
@ai/context/workstreams/index.md
@ai/context/workstreams/flow-page-references.md
@ai/context/process/communication.md
@ai/context/process/ai-to-ai-prompting.md
@ai/context/process/jira-story-rules.md
@ai/context/people/manager.md
@ai/context/people/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@ai/context/decisions/rest-vs-graphql.md
@ai/context/decisions/discourse-handling.md
@knowledge/workspace-model.md
@knowledge/communication-rules.md
@knowledge/agent-memory-rules.md
@knowledge/memory-promotion-rules.md
Today's date:
@@ -52,15 +34,15 @@ Today's date:
Today's canonical daily note, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Recent daily notes available:
!`if [ -d vault/06-daily ]; then ls -1 vault/06-daily 2>/dev/null | sort | tail -n 5; else ls -1 ai/logs 2>/dev/null | sort | tail -n 5; fi`
!`if [ -d vault/06-daily ]; then ls -1 vault/06-daily 2>/dev/null | sort | tail -n 5; else echo "No daily notes directory available."; fi`
Detailed active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
Latest Mattermost context, if available:

View File

@@ -9,25 +9,15 @@ Read:
@README.md
@core/README.md
@core/memory/operational-memory.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@vault/03-context/workstreams/index.md
@vault/03-context/process/context-maintenance.md
@ai/context/index.md
@ai/context/project.md
@ai/context/workstreams/index.md
@ai/context/process/context-maintenance.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/agent-memory-rules.md
@knowledge/memory-promotion-rules.md
Today's existing log, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Incorporate these new rough notes into today's log:
@@ -37,7 +27,7 @@ Instructions:
- use `workspace-memory-curation` when available
- Update or create `vault/06-daily/$(date +%F).md`
- Use `ai/logs/$(date +%F).md` only as temporary compatibility fallback
- Maintain daily-note frontmatter for Obsidian Bases: `date`, `focus`, `work-items`, `blockers`, and `updated`
- Preserve concrete technical meaning
- Capture both technical findings and communication context when relevant
- Keep the log concise but reusable for later standups and manager updates

View File

@@ -9,7 +9,6 @@ Use `professional-communication` when available.
Read:
@prompts/manager-update.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@@ -17,21 +16,10 @@ Read:
@vault/03-context/process/communication.md
@vault/04-people/manager.md
@vault/04-people/index.md
@ai/context/index.md
@ai/context/project.md
@ai/context/workstreams/index.md
@ai/context/process/communication.md
@ai/context/people/manager.md
@ai/context/people/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/communication-rules.md
@knowledge/agent-memory-rules.md
Today's log, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest Mattermost context, if available:
@@ -39,7 +27,7 @@ Latest Mattermost context, if available:
Detailed active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
User draft or rough notes:

View File

@@ -7,7 +7,7 @@ Use the configured Mattermost sync command to fetch fresh communication context
Preferred command sources:
- `AIW_MATTERMOST_SYNC_CMD`
- compatibility fallback: `FIDELITY_MATTERMOST_SYNC_CMD`
- Fidelity profile alias: `FIDELITY_MATTERMOST_SYNC_CMD`
- fallback: `bash scripts/mattermost/sync.sh`
Run the command and use its output as fresh communication context:
@@ -21,14 +21,13 @@ Then:
- if the command fails, stop there and do not edit any workspace files
- use `ai/inbox/mattermost-latest.md` if it exists and is non-empty
- otherwise use `scripts/mattermost/generated/mattermost_context.jsonl` if it exists and is non-empty
- apply the memory promotion rules from `vault/03-context/process/memory-promotion-rules.md`, falling back to `knowledge/memory-promotion-rules.md` only if needed
- apply the memory promotion rules from `vault/03-context/process/memory-promotion-rules.md`
- treat Mattermost output as live communication evidence; the agent decides what becomes promoted memory
- automatically promote explicit, project-relevant, high-confidence facts
- default destination is `vault/06-daily/$(date +%F).md`
- update `vault/01-current/current-work.md` only for facts that materially change the current work window
- update `vault/02-work-items/*.md` for explicit Jira IDs, approved titles, points, scope, and status notes
- keep `vault/01-current/work-items.md` aligned as the compact summary of active ticket files
- use `ai/*` paths only as temporary compatibility fallback
- do not write tooling noise, sync status, or generic chat chatter into project memory
- if a fact is ambiguous, skip it rather than asking the user what to do

View File

@@ -8,7 +8,6 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@@ -16,22 +15,10 @@ Read:
@vault/03-context/workstreams/index.md
@vault/03-context/workstreams/flow-page-references.md
@vault/03-context/process/index.md
@ai/context/index.md
@ai/context/project.md
@ai/context/systems/index.md
@ai/context/workstreams/index.md
@ai/context/workstreams/flow-page-references.md
@ai/context/process/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/workspace-model.md
@knowledge/communication-rules.md
@knowledge/memory-promotion-rules.md
Today's log, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Current Mattermost inbox, if present:
@@ -61,10 +48,9 @@ Instructions:
- `vault/05-decisions/*.md`
- `.opencode/commands/*.md` when command behavior needs to change
- `prompts/*.md` when a reusable output template needs to change
- `.opencode/agents/*.md` or `ai/AGENTS.md` when default agent behavior needs to change
- `.opencode/agents/*.md` or `AGENTS.md` when default agent behavior needs to change
- `.opencode/skills/*/SKILL.md` when a specialized workflow needs to change
- `vault/00-start/*.md` when durable onboarding or usage guidance needs to change
- Use legacy `ai/*` and `knowledge/*` only as compatibility fallback during migration
- Prefer concrete project updates over broad summaries
- If a fact is still ambiguous, do not promote it
- If the promoted fact is a reusable behavior correction, do not leave it only in a daily log; update the operational file that controls future behavior

View File

@@ -10,10 +10,10 @@ Inputs:
- `$ARGUMENTS` may contain an export path, channel names, or date filters
- if no explicit path is given in the arguments, use `AIW_SLACK_EXPORT_PATH` when available
- compatibility fallback: `FIDELITY_SLACK_EXPORT_PATH`
- Fidelity profile alias: `FIDELITY_SLACK_EXPORT_PATH`
- otherwise, if `archives/slack/export/` exists, use it as the default import source
- if no channels are specified, auto-detect channels using `AIW_CHANNEL_PREFIX`
- compatibility/default prefix: `fidelity`
- Fidelity default prefix: `fidelity`
- if no message limit is specified, auto-tune message selection based on archive size
- if no date range is specified, do an initial full-history sweep across the detected `fidelity*` channels
- preserve broad coverage across years and channels while still prioritizing high-signal messages
@@ -24,7 +24,6 @@ First, run the importer:
Read:
@ai/AGENTS.md
@core/README.md
@core/memory/operational-memory.md
@core/integrations/communication-model.md
@@ -36,18 +35,6 @@ Read:
@vault/03-context/process/index.md
@vault/04-people/index.md
@vault/04-people/manager.md
@ai/context/index.md
@ai/context/project.md
@ai/context/systems/index.md
@ai/context/workstreams/index.md
@ai/context/process/index.md
@ai/context/people/index.md
@ai/context/people/manager.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/agent-memory-rules.md
@knowledge/memory-promotion-rules.md
Imported summary, if present:
@@ -83,7 +70,7 @@ Instructions:
- avoid promoting outdated daily status unless it changes current understanding
- update existing memory when the archive clarifies or corrects it
- if historical facts are ambiguous or likely outdated, summarize them as archived context instead of promoting them
- write promoted memory to `vault/` first; use legacy `ai/*` only as compatibility fallback
- write promoted memory to `vault/`
Return:

View File

@@ -11,7 +11,6 @@ First, refresh Mattermost context before drafting:
Read:
@prompts/standup.md
@ai/AGENTS.md
@vault/00-start/start-here.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@@ -21,18 +20,6 @@ Read:
@vault/03-context/process/communication.md
@vault/03-context/process/jira-story-rules.md
@vault/04-people/manager.md
@ai/context/index.md
@ai/context/project.md
@ai/context/workstreams/index.md
@ai/context/workstreams/flow-page-references.md
@ai/context/process/communication.md
@ai/context/process/jira-story-rules.md
@ai/context/people/manager.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/communication-rules.md
@knowledge/agent-memory-rules.md
Previous workday Mattermost context, if present:
@@ -40,7 +27,7 @@ Previous workday Mattermost context, if present:
Today's log, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest Mattermost context, preferring inbox and falling back to generated JSONL:
@@ -48,7 +35,7 @@ Latest Mattermost context, preferring inbox and falling back to generated JSONL:
Detailed active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
Before drafting:
@@ -61,7 +48,7 @@ Before drafting:
- if documentation or root cause updates directly support a story, roll them into that story's update instead of listing them separately
- exclude items that are not directly tied to a story unless they are true blockers
- when one Jira item has multiple concrete updates, group them under one top-level `JIRA-ID - Title` bullet with indented markdown sub-bullets instead of repeating the same Jira line
- use `vault/03-context/workstreams/flow-page-references.md` to preserve real flow/page identifiers when shorthand appears in logs or messages, falling back to `ai/context/workstreams/flow-page-references.md` only if needed
- use `vault/03-context/workstreams/flow-page-references.md` to preserve real flow/page identifiers when shorthand appears in logs or messages
Return a standup that is:

View File

@@ -21,7 +21,6 @@ Read:
@core/README.md
@core/memory/operational-memory.md
@prompts/story-draft.md
@ai/AGENTS.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@vault/03-context/project.md
@@ -30,22 +29,10 @@ Read:
@vault/03-context/process/jira-story-rules.md
@vault/04-people/manager.md
@vault/04-people/index.md
@ai/context/index.md
@ai/context/project.md
@ai/context/workstreams/index.md
@ai/context/process/communication.md
@ai/context/process/jira-story-rules.md
@ai/context/people/manager.md
@ai/context/people/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/communication-rules.md
@knowledge/agent-memory-rules.md
Today's log, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Latest Mattermost context, if available:
@@ -53,7 +40,7 @@ Latest Mattermost context, if available:
Detailed active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
Requirements:

View File

@@ -6,7 +6,6 @@ Answer the user's Swift/iOS programming question using current iOS practices and
Read:
@ai/AGENTS.md
@vault/03-context/ios/index.md
@vault/03-context/ios/current-practices.md
@vault/03-context/ios/project-swift-guidance.md
@@ -14,14 +13,6 @@ Read:
@vault/03-context/systems/index.md
@vault/03-context/workstreams/index.md
@vault/01-current/work-items.md
@ai/context/ios/index.md
@ai/context/ios/current-practices.md
@ai/context/ios/project-swift-guidance.md
@ai/context/index.md
@ai/context/systems/index.md
@ai/context/workstreams/index.md
@ai/work-items/index.md
@knowledge/agent-memory-rules.md
User question:

View File

@@ -7,7 +7,6 @@ Use this command when new information should become part of the persistent works
Read:
@README.md
@ai/AGENTS.md
@vault/00-start/start-here.md
@vault/01-current/current-work.md
@vault/01-current/work-items.md
@@ -18,25 +17,10 @@ Read:
@vault/03-context/process/context-maintenance.md
@vault/04-people/manager.md
@vault/04-people/index.md
@ai/context/index.md
@ai/context/project.md
@ai/context/systems/index.md
@ai/context/workstreams/index.md
@ai/context/workstreams/flow-page-references.md
@ai/context/process/context-maintenance.md
@ai/context/people/manager.md
@ai/context/people/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/workspace-model.md
@knowledge/communication-rules.md
@knowledge/agent-memory-rules.md
@knowledge/memory-promotion-rules.md
Today's existing log, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
New information to incorporate:
@@ -62,8 +46,8 @@ Instructions:
- `prompts/*.md`
- `.opencode/agents/*.md`
- `.opencode/skills/*/SKILL.md`
- Write to `vault/` first when a canonical note exists; use `ai/*` and `knowledge/*` only as temporary compatibility fallback
- Update the appropriate files directly
- When updating a canonical vault note, maintain frontmatter properties used by Obsidian Bases, including `updated`, `systems`, `workstreams`, `people`, `related`, `focus`, `work-items`, and `blockers` when applicable
- If an existing statement became stale, replace or refine it
- If the new information changes how this workspace should behave, update the linked command, prompt, agent, skill, or knowledge file that enforces that behavior
- Do not invent missing facts

View File

@@ -16,21 +16,14 @@ $ARGUMENTS
Read:
@prompts/mattermost-translation.md
@ai/AGENTS.md
@vault/03-context/project.md
@vault/03-context/process/communication.md
@vault/04-people/manager.md
@vault/04-people/index.md
@ai/context/index.md
@ai/context/project.md
@ai/context/process/communication.md
@ai/context/people/manager.md
@ai/context/people/index.md
@knowledge/communication-rules.md
If relevant, use today's log for context:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Return:

View File

@@ -24,22 +24,12 @@ Read active workspace memory:
@vault/07-maps/people.md
@vault/03-context/project.md
@vault/03-context/process/communication.md
@vault/03-context/process/context-maintenance.md
@vault/03-context/process/workspace-model.md
@vault/03-context/process/agent-memory-rules.md
@vault/03-context/process/memory-promotion-rules.md
@vault/04-people/manager.md
@vault/04-people/index.md
@ai/AGENTS.md
@ai/context/index.md
@ai/context/project.md
@ai/context/process/communication.md
@ai/context/process/context-maintenance.md
@ai/context/people/manager.md
@ai/context/people/index.md
@ai/work-items/index.md
@ai/state/current.md
@ai/state/work-items.md
@knowledge/workspace-model.md
@knowledge/communication-rules.md
@knowledge/agent-memory-rules.md
@knowledge/memory-promotion-rules.md
Read active profile, preferring the configured profile and falling back to Fidelity:
@@ -51,15 +41,15 @@ Today's date:
Today's canonical daily note, if present:
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; elif [ -f ai/logs/$(date +%F).md ]; then cat ai/logs/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
!`if [ -f vault/06-daily/$(date +%F).md ]; then cat vault/06-daily/$(date +%F).md; else echo "No daily note exists for today yet."; fi`
Recent daily notes available:
!`if [ -d vault/06-daily ]; then ls -1 vault/06-daily 2>/dev/null | sort | tail -n 5; else ls -1 ai/logs 2>/dev/null | sort | tail -n 5; fi`
!`if [ -d vault/06-daily ]; then ls -1 vault/06-daily 2>/dev/null | sort | tail -n 5; else echo "No daily notes directory available."; fi`
Detailed active work item files, if available:
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; elif [ -d ai/work-items ]; then for f in ai/work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
!`if [ -d vault/02-work-items ]; then for f in vault/02-work-items/*.md; do case "$f" in *README.md|*index.md) continue;; esac; echo "\n### $f"; cat "$f"; done; else echo "No work item files available."; fi`
Latest communication inbox, if available:

View File

@@ -18,24 +18,21 @@ export const FidelityCompaction = async ({ directory }) => {
"core/memory/operational-memory.md",
"core/integrations/communication-model.md",
"profiles/fidelity/profile.md",
"ai/context/index.md",
"ai/context/project.md",
"ai/context/ios/index.md",
"ai/context/ios/current-practices.md",
"ai/context/ios/project-swift-guidance.md",
"ai/context/systems/index.md",
"ai/context/workstreams/index.md",
"ai/context/process/communication.md",
"ai/context/process/ai-to-ai-prompting.md",
"ai/context/people/manager.md",
"ai/context/people/index.md",
"ai/work-items/index.md",
"ai/state/current.md",
"ai/state/work-items.md",
"ai/context/decisions/rest-vs-graphql.md",
"ai/context/decisions/discourse-handling.md",
"knowledge/workspace-model.md",
"knowledge/communication-rules.md",
"vault/00-start/start-here.md",
"vault/01-current/current-work.md",
"vault/01-current/work-items.md",
"vault/03-context/project.md",
"vault/03-context/ios/index.md",
"vault/03-context/ios/current-practices.md",
"vault/03-context/ios/project-swift-guidance.md",
"vault/03-context/systems/index.md",
"vault/03-context/workstreams/index.md",
"vault/03-context/process/communication.md",
"vault/03-context/process/ai-to-ai-prompting.md",
"vault/04-people/manager.md",
"vault/04-people/index.md",
"vault/05-decisions/rest-vs-graphql.md",
"vault/05-decisions/discourse-handling.md",
]
const sections = []
@@ -48,7 +45,7 @@ export const FidelityCompaction = async ({ directory }) => {
}
try {
const logsDir = path.join(directory, "ai/logs")
const logsDir = path.join(directory, "vault/06-daily")
const logs = (await readdir(logsDir))
.filter((name) => name.endsWith(".md"))
.sort()
@@ -57,7 +54,7 @@ export const FidelityCompaction = async ({ directory }) => {
for (const logName of logs) {
const content = await safeRead(path.join(logsDir, logName))
if (content) {
sections.push(`### ai/logs/${logName}\n${content.trim()}`)
sections.push(`### vault/06-daily/${logName}\n${content.trim()}`)
}
}
} catch {

View File

@@ -18,10 +18,10 @@ Use this skill when the user wants a prompt for another AI assistant, GitHub Cop
- test strategy
- story/PR drafting
2. Pull only the relevant context:
- `ai/work-items/` for ticket-specific context
- `ai/context/systems/` for component context
- `ai/context/workstreams/` for recurring constraints
- `ai/context/ios/` for Swift/iOS guidance
- `vault/02-work-items/` for ticket-specific context
- `vault/03-context/systems/` for component context
- `vault/03-context/workstreams/` for recurring constraints
- `vault/03-context/ios/` for Swift/iOS guidance
3. Make the prompt self-contained.
4. Tell the target AI what to inspect before acting.
5. State constraints, non-goals, and validation expectations.

View File

@@ -24,7 +24,6 @@ Skills available to the workspace agent.
## Related
- [Tooling Map](../../knowledge/maps/tooling.md)
- [Tooling Map](../../vault/07-maps/tooling.md)
- [Commands Index](../commands/index.md)
- [Prompts Index](../../prompts/index.md)

View File

@@ -11,8 +11,8 @@ Use this skill for Swift, SwiftUI, iOS architecture, concurrency, testing, or de
## Workflow
1. Identify whether the question is general Swift/iOS or Fidelity-specific.
2. Read `ai/context/ios/current-practices.md` for currentness rules.
3. Read `ai/context/ios/project-swift-guidance.md` when the answer may affect XFlow, Fid4, XFlowViewMaker, FTFrameworks, feature flags, or consumer validation.
2. Read `vault/03-context/ios/current-practices.md` for currentness rules.
3. Read `vault/03-context/ios/project-swift-guidance.md` when the answer may affect XFlow, Fid4, XFlowViewMaker, FTFrameworks, feature flags, or consumer validation.
4. If the answer depends on current Apple APIs, Xcode versions, or migration guidance, verify with official Apple/Swift documentation before making strong claims.
5. Separate:
- current best practice