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:
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user