Compare commits
2 Commits
main
...
6274e4936d
| Author | SHA1 | Date | |
|---|---|---|---|
|
6274e4936d
|
|||
|
e1259688a4
|
8
.claude/commands/handoff.md
Normal file
8
.claude/commands/handoff.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Write a session handoff file for the current session.
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
1. Read `templates/claude-templates.md` and find the Session Handoff template (Template 4). Use the Light Handoff if this is a small project (under 5 sessions), Full Handoff otherwise.
|
||||||
|
2. Fill in every field based on what was accomplished in this session. Be specific — include exact file paths for every output, exact numbers discovered, and conditional logic established.
|
||||||
|
3. Write the handoff to `./docs/summaries/handoff-[today's date]-[topic].md`.
|
||||||
|
4. If a previous handoff file exists in `./docs/summaries/`, move it to `./docs/archive/handoffs/`.
|
||||||
|
5. Tell me the file path of the new handoff and summarize what it contains.
|
||||||
13
.claude/commands/process-doc.md
Normal file
13
.claude/commands/process-doc.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Process an input document into a structured source summary.
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
1. Read `templates/claude-templates.md` and find the Source Document Summary template (Template 1). Use the Light Source Summary if this is a small project (under 5 sessions), Full Source Summary otherwise.
|
||||||
|
2. Read the document at: $ARGUMENTS
|
||||||
|
3. Extract all information into the template format. Pay special attention to:
|
||||||
|
- EXACT numbers — do not round or paraphrase
|
||||||
|
- Requirements in IF/THEN/BUT/EXCEPT format
|
||||||
|
- Decisions with rationale and rejected alternatives
|
||||||
|
- Open questions marked as OPEN, ASSUMED, or MISSING
|
||||||
|
4. Write the summary to `./docs/summaries/source-[filename].md`.
|
||||||
|
5. Move the original document to `./docs/archive/`.
|
||||||
|
6. Tell me: what was extracted, what's unclear, and what needs follow-up.
|
||||||
13
.claude/commands/status.md
Normal file
13
.claude/commands/status.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Report on the current project state.
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
1. Read `./docs/summaries/00-project-brief.md` for project context.
|
||||||
|
2. Find and read the latest `handoff-*.md` file in `./docs/summaries/` for current state.
|
||||||
|
3. List all files in `./docs/summaries/` to understand what's been processed.
|
||||||
|
4. Report:
|
||||||
|
- **Project:** name and type from the project brief
|
||||||
|
- **Current phase:** based on the project phase tracker
|
||||||
|
- **Last session:** what was accomplished (from the latest handoff)
|
||||||
|
- **Next steps:** what the next session should do (from the latest handoff)
|
||||||
|
- **Open questions:** anything unresolved
|
||||||
|
- **Summary file count:** how many files in docs/summaries/ (warn if approaching 15)
|
||||||
51
CLAUDE.md
Normal file
51
CLAUDE.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
## Session Start
|
||||||
|
|
||||||
|
Read the latest handoff in docs/summaries/ if one exists. Load only the files that handoff references — not all summaries. If no handoff exists, ask: what is the project, what type of work, what is the target deliverable.
|
||||||
|
|
||||||
|
Before starting work, state: what you understand the project state to be, what you plan to do this session, and any open questions.
|
||||||
|
|
||||||
|
## Identity
|
||||||
|
|
||||||
|
You work with Patrick, a Solutions Architect, on the OYS Borrow a Boat (bab-app) project — a Quasar/Vue 3 app for managing a Borrow a Boat program for a Yacht Club. Backend is Appwrite.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
- **App**: OYS Borrow a Boat (oys_bab)
|
||||||
|
- **Stack**: Quasar (Vue 3), TypeScript, Appwrite (BaaS)
|
||||||
|
- **Purpose**: Manage a Borrow a Boat program for a Yacht Club
|
||||||
|
- **Docs**: docs/planning/ contains personas, user/role/permission model, and time-based logic
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
1. Do not mix unrelated project contexts in one session.
|
||||||
|
2. Write state to disk, not conversation. After completing meaningful work, write a summary to docs/summaries/ using templates from templates/claude-templates.md. Include: decisions with rationale, exact numbers, file paths, open items.
|
||||||
|
3. Before compaction or session end, write to disk: every number, every decision with rationale, every open question, every file path, exact next action.
|
||||||
|
4. When switching work types (research → writing → review), write a handoff to docs/summaries/handoff-[date]-[topic].md and suggest a new session.
|
||||||
|
5. Do not silently resolve open questions. Mark them OPEN or ASSUMED.
|
||||||
|
6. Do not bulk-read documents. Process one at a time: read, summarize to disk, release from context before reading next. For the detailed protocol, read docs/context/processing-protocol.md.
|
||||||
|
7. Sub-agent returns must be structured, not free-form prose. Use output contracts from templates/claude-templates.md.
|
||||||
|
|
||||||
|
## Where Things Live
|
||||||
|
|
||||||
|
- templates/claude-templates.md — summary, handoff, decision, analysis, task, output contract templates (read on demand)
|
||||||
|
- docs/summaries/ — active session state (latest handoff + project brief + decision records + source summaries)
|
||||||
|
- docs/context/ — reusable domain knowledge, loaded only when relevant to the current task
|
||||||
|
- processing-protocol.md — full document processing steps
|
||||||
|
- archive-rules.md — summary lifecycle and file archival rules
|
||||||
|
- subagent-rules.md — rules for structured sub-agent outputs
|
||||||
|
- docs/planning/ — original planning documents (personas, roles/permissions, time logic)
|
||||||
|
- docs/archive/ — processed raw files. Do not read unless explicitly told.
|
||||||
|
- output/deliverables/ — final outputs
|
||||||
|
- src/ — Quasar/Vue app source
|
||||||
|
- src-pwa/ — PWA config
|
||||||
|
- appwrite.json — Appwrite project config
|
||||||
|
|
||||||
|
## Error Recovery
|
||||||
|
|
||||||
|
If context degrades or auto-compact fires unexpectedly: write current state to docs/summaries/recovery-[date].md, tell the user what may have been lost, suggest a fresh session.
|
||||||
|
|
||||||
|
## Before Delivering Output
|
||||||
|
|
||||||
|
Verify: exact numbers preserved, open questions marked OPEN, output matches what was requested (not assumed), claims backed by specific data, output consistent with stored decisions in docs/context/, summary written to disk for this session's work.
|
||||||
16
docs/context/archive-rules.md
Normal file
16
docs/context/archive-rules.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Archive Rules
|
||||||
|
|
||||||
|
## Raw File Archival
|
||||||
|
|
||||||
|
After creating a Source Document Summary for any raw file:
|
||||||
|
1. Move the raw file to `docs/archive/`
|
||||||
|
2. Record the move in the source summary's header: `Archived From: [original path]`
|
||||||
|
3. Do not read from `docs/archive/` unless the user explicitly says "go back to the original [filename]"
|
||||||
|
|
||||||
|
## Summary Lifecycle Rules
|
||||||
|
|
||||||
|
1. **Session handoffs expire**: After a new handoff is written, the previous handoff moves to `docs/archive/handoffs/`. Only the latest handoff stays in `docs/summaries/`.
|
||||||
|
2. **Decision records persist**: Decision records (DR-*) stay in `docs/summaries/` permanently — they are institutional memory.
|
||||||
|
3. **Source summaries persist**: Source document summaries stay until the project ends — they replace raw documents.
|
||||||
|
4. **Analysis summaries**: Keep only the latest version. If re-run, the new one replaces the old (archive the old one).
|
||||||
|
5. **Maximum active summaries**: If `docs/summaries/` exceeds 15 files, consolidate older source summaries into a single `project-digest.md` and archive the originals.
|
||||||
23
docs/context/processing-protocol.md
Normal file
23
docs/context/processing-protocol.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Document Processing Protocol
|
||||||
|
|
||||||
|
Use this whenever you need to process multiple documents or large files.
|
||||||
|
|
||||||
|
## For 1-3 Short Documents (< 2K words each)
|
||||||
|
|
||||||
|
Read sequentially. After each document, write a Source Document Summary (Template 1 from `templates/claude-templates.md`) to disk. Then proceed with work using summaries only.
|
||||||
|
|
||||||
|
## For 4+ Documents OR Any Document > 2K Words
|
||||||
|
|
||||||
|
**Step 1:** List all documents with file sizes. Present to user for prioritization.
|
||||||
|
|
||||||
|
**Step 2:** Process each document individually:
|
||||||
|
- Read one document
|
||||||
|
- Extract into Source Document Summary format
|
||||||
|
- Write to `./docs/summaries/source-[filename].md`
|
||||||
|
- Release the document from active consideration before reading the next
|
||||||
|
|
||||||
|
**Step 3:** After all documents are processed, read only the summaries to form your working context.
|
||||||
|
|
||||||
|
**Step 4:** Cross-reference summaries for contradictions or dependencies. Note these explicitly.
|
||||||
|
|
||||||
|
**Step 5:** Proceed with the actual task using summaries as your reference.
|
||||||
18
docs/context/subagent-rules.md
Normal file
18
docs/context/subagent-rules.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Subagent Deployment Rules
|
||||||
|
|
||||||
|
## When to Use Subagent vs. Main Agent
|
||||||
|
|
||||||
|
| Situation | Approach | Why |
|
||||||
|
|-----------|----------|-----|
|
||||||
|
| Reading/analyzing documents | Subagent | Keeps source content out of main context |
|
||||||
|
| Research and competitive analysis | Subagent | Heavy reading, return summary only |
|
||||||
|
| Writing deliverables | Main agent | Needs full decision-making context |
|
||||||
|
| Schema/architecture design | Main agent | Needs holistic project understanding |
|
||||||
|
| Code generation | Subagent | Isolated implementation, return result |
|
||||||
|
| Review and QA | Subagent | Fresh perspective, no bias from writing |
|
||||||
|
|
||||||
|
## Output Requirements
|
||||||
|
|
||||||
|
Subagent output must conform to the Output Contracts in `templates/claude-templates.md`. No free-form prose returns.
|
||||||
|
|
||||||
|
Optimal subagent return size: 1,000-2,000 tokens of structured summary. Longer returns consume main agent context without proportional benefit.
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<q-layout view="hHh Lpr fFf">
|
<q-layout view="hHh Lpr fFf">
|
||||||
|
<ToolbarComponent :pageTitle="route.meta.title as string" />
|
||||||
<q-page-container>
|
<q-page-container>
|
||||||
<router-view />
|
<router-view />
|
||||||
</q-page-container>
|
</q-page-container>
|
||||||
@@ -11,9 +12,12 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useQuasar } from 'quasar';
|
import { useQuasar } from 'quasar';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
import BottomNavComponent from 'src/components/BottomNavComponent.vue';
|
import BottomNavComponent from 'src/components/BottomNavComponent.vue';
|
||||||
|
import ToolbarComponent from 'src/components/ToolbarComponent.vue';
|
||||||
|
|
||||||
const q = useQuasar();
|
const q = useQuasar();
|
||||||
|
const route = useRoute();
|
||||||
// q.fullscreen.request();
|
// q.fullscreen.request();
|
||||||
q.addressbarColor.set('#14539a');
|
q.addressbarColor.set('#14539a');
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<template>
|
<template>
|
||||||
<ToolbarComponent />
|
|
||||||
<q-page class="row justify-center">
|
<q-page class="row justify-center">
|
||||||
<q-img alt="OYS Logo" src="~assets/oysqn_logo.png" fit="scale-down" />
|
<q-img alt="OYS Logo" src="~assets/oysqn_logo.png" fit="scale-down" />
|
||||||
<q-list class="full-width mobile-only">
|
<q-list class="full-width mobile-only">
|
||||||
@@ -24,5 +23,4 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { enabledLinks } from 'src/router/navlinks.js';
|
import { enabledLinks } from 'src/router/navlinks.js';
|
||||||
import ToolbarComponent from 'components/ToolbarComponent.vue';
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<template>
|
<template>
|
||||||
<toolbar-component pageTitle="Member Profile" />
|
|
||||||
<q-page
|
<q-page
|
||||||
padding
|
padding
|
||||||
class="row">
|
class="row">
|
||||||
@@ -76,7 +75,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ToolbarComponent from 'src/components/ToolbarComponent.vue';
|
|
||||||
import { useAuthStore } from 'src/stores/auth';
|
import { useAuthStore } from 'src/stores/auth';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<BoatReservationComponent v-model="newReservation" />
|
<q-page>
|
||||||
|
<BoatReservationComponent v-model="newReservation" />
|
||||||
|
</q-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<q-page>
|
||||||
<q-tabs
|
<q-tabs
|
||||||
v-model="tab"
|
v-model="tab"
|
||||||
inline-label
|
inline-label
|
||||||
@@ -57,6 +58,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
</q-tab-panels>
|
</q-tab-panels>
|
||||||
|
</q-page>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useReservationStore } from 'src/stores/reservation';
|
import { useReservationStore } from 'src/stores/reservation';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="fit row wrap justify-start items-start content-start">
|
<q-page class="fit row wrap justify-start items-start content-start">
|
||||||
<div class="q-pa-md">
|
<div class="q-pa-md">
|
||||||
<div
|
<div
|
||||||
class="scheduler"
|
class="scheduler"
|
||||||
@@ -128,7 +128,6 @@
|
|||||||
:model-value="template" />
|
:model-value="template" />
|
||||||
</q-list>
|
</q-list>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<q-dialog v-model="alert">
|
<q-dialog v-model="alert">
|
||||||
<q-card>
|
<q-card>
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
@@ -153,6 +152,7 @@
|
|||||||
</q-card-actions>
|
</q-card-actions>
|
||||||
</q-card>
|
</q-card>
|
||||||
</q-dialog>
|
</q-dialog>
|
||||||
|
</q-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<BoatReservationComponent v-model="reservation" />
|
<q-page>
|
||||||
|
<BoatReservationComponent v-model="reservation" />
|
||||||
|
</q-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<toolbar-component pageTitle="Schedule" />
|
|
||||||
<router-view />
|
<router-view />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ToolbarComponent from 'src/components/ToolbarComponent.vue';
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -13,16 +13,19 @@ const routes: RouteRecordRaw[] = [
|
|||||||
// component: () => import('pages/IndexPage.vue'),
|
// component: () => import('pages/IndexPage.vue'),
|
||||||
component: () => import('src/pages/IndexPage.vue'),
|
component: () => import('src/pages/IndexPage.vue'),
|
||||||
name: 'index',
|
name: 'index',
|
||||||
|
meta: { title: 'OYS Borrow a Boat' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/boat',
|
path: '/boat',
|
||||||
component: () => import('src/pages/BoatPage.vue'),
|
component: () => import('src/pages/BoatPage.vue'),
|
||||||
name: 'boat',
|
name: 'boat',
|
||||||
|
meta: { title: 'Boats' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/schedule',
|
path: '/schedule',
|
||||||
component: () => import('pages/schedule/SchedulePageView.vue'),
|
component: () => import('pages/schedule/SchedulePageView.vue'),
|
||||||
name: 'schedule',
|
name: 'schedule',
|
||||||
|
meta: { title: 'Schedule' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
@@ -64,10 +67,12 @@ const routes: RouteRecordRaw[] = [
|
|||||||
path: '/certification',
|
path: '/certification',
|
||||||
component: () => import('src/pages/CertificationPage.vue'),
|
component: () => import('src/pages/CertificationPage.vue'),
|
||||||
name: 'certification',
|
name: 'certification',
|
||||||
|
meta: { title: 'Certifications' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/task',
|
path: '/task',
|
||||||
name: 'task',
|
name: 'task',
|
||||||
|
meta: { title: 'Tasks' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
@@ -85,16 +90,19 @@ const routes: RouteRecordRaw[] = [
|
|||||||
path: '/checklist',
|
path: '/checklist',
|
||||||
component: () => import('pages/ChecklistPage.vue'),
|
component: () => import('pages/ChecklistPage.vue'),
|
||||||
name: 'checklist',
|
name: 'checklist',
|
||||||
|
meta: { title: 'Checklist' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/profile',
|
path: '/profile',
|
||||||
component: () => import('src/pages/ProfilePage.vue'),
|
component: () => import('src/pages/ProfilePage.vue'),
|
||||||
name: 'profile',
|
name: 'profile',
|
||||||
|
meta: { title: 'Member Profile' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/reference',
|
path: '/reference',
|
||||||
component: () => import('src/pages/reference/ReferencePage.vue'),
|
component: () => import('src/pages/reference/ReferencePage.vue'),
|
||||||
name: 'reference',
|
name: 'reference',
|
||||||
|
meta: { title: 'Reference' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
@@ -103,7 +111,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
name: 'reference-index',
|
name: 'reference-index',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/reference/:id/view',
|
path: 'reference/:id/view',
|
||||||
component: () =>
|
component: () =>
|
||||||
import('src/pages/reference/ReferenceItemPage.vue'),
|
import('src/pages/reference/ReferenceItemPage.vue'),
|
||||||
},
|
},
|
||||||
@@ -117,12 +125,12 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: { requiredRoles: ['admin'] },
|
meta: { requiredRoles: ['admin'] },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/user',
|
path: 'user',
|
||||||
component: () => import('pages/admin/UserAdminPage.vue'),
|
component: () => import('pages/admin/UserAdminPage.vue'),
|
||||||
name: 'useradmin',
|
name: 'useradmin',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/boat',
|
path: 'boat',
|
||||||
component: () => import('pages/admin/BoatAdminPage.vue'),
|
component: () => import('pages/admin/BoatAdminPage.vue'),
|
||||||
name: 'boatadmin',
|
name: 'boatadmin',
|
||||||
},
|
},
|
||||||
@@ -144,14 +152,6 @@ const routes: RouteRecordRaw[] = [
|
|||||||
publicRoute: true,
|
publicRoute: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: '/login',
|
|
||||||
component: () => import('pages/LoginPage.vue'),
|
|
||||||
name: 'login',
|
|
||||||
meta: {
|
|
||||||
publicRoute: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/terms-of-service',
|
path: '/terms-of-service',
|
||||||
component: () => import('pages/TermsOfServicePage.vue'),
|
component: () => import('pages/TermsOfServicePage.vue'),
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ export const useAuthStore = defineStore('auth', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function logout() {
|
function logout() {
|
||||||
return account.deleteSession('current').then((currentUser.value = null));
|
return account.deleteSession('current').then(() => { currentUser.value = null; });
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateName(name: string) {
|
async function updateName(name: string) {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export const useReferenceStore = defineStore('reference', {
|
|||||||
|
|
||||||
getters: {
|
getters: {
|
||||||
getCategory(state) {
|
getCategory(state) {
|
||||||
(category: string) => {
|
return (category: string) => {
|
||||||
return state.allItems.filter((c) => c.category === category);
|
return state.allItems.filter((c) => c.category === category);
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
490
templates/claude-templates.md
Normal file
490
templates/claude-templates.md
Normal file
@@ -0,0 +1,490 @@
|
|||||||
|
# Claude Templates — On-Demand Reference
|
||||||
|
|
||||||
|
> **Do NOT read this file at session start.** Read it only when you need to write a summary, handoff, decision record, or subagent output. This file is referenced from CLAUDE.md.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template 1: Source Document Summary
|
||||||
|
|
||||||
|
**Use when:** Processing any input document (client brief, research report, requirements doc, existing proposal)
|
||||||
|
|
||||||
|
**Write to:** `./docs/summaries/source-[filename].md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Source Summary: [Original Document Name]
|
||||||
|
**Processed:** [YYYY-MM-DD]
|
||||||
|
**Source Path:** [exact file path]
|
||||||
|
**Archived From:** [original path, if moved to docs/archive/]
|
||||||
|
**Document Type:** [brief / requirements / research / proposal / transcript / other]
|
||||||
|
**Confidence:** [high = I understood everything / medium = some interpretation needed / low = significant gaps]
|
||||||
|
|
||||||
|
## Exact Numbers & Metrics
|
||||||
|
<!-- List EVERY specific number, dollar amount, percentage, date, count, measurement.
|
||||||
|
Do NOT round. Do NOT paraphrase. Copy exactly as stated in source. -->
|
||||||
|
- [metric]: [exact value] (page/section reference if available)
|
||||||
|
- [metric]: [exact value]
|
||||||
|
|
||||||
|
## Key Facts (Confirmed)
|
||||||
|
<!-- Only include facts explicitly stated in the document. Tag source. -->
|
||||||
|
- [fact] — stated in [section/page]
|
||||||
|
- [fact] — stated in [section/page]
|
||||||
|
|
||||||
|
## Requirements & Constraints
|
||||||
|
<!-- Use IF/THEN/BUT/EXCEPT format to preserve conditional logic -->
|
||||||
|
- REQUIREMENT: [what is needed]
|
||||||
|
- CONDITION: [when/if this applies]
|
||||||
|
- CONSTRAINT: [limitation or exception]
|
||||||
|
- PRIORITY: [must-have / should-have / nice-to-have / stated by whom]
|
||||||
|
|
||||||
|
## Decisions Referenced
|
||||||
|
<!-- Any decisions mentioned in the document -->
|
||||||
|
- DECISION: [what was decided]
|
||||||
|
- RATIONALE: [why, as stated in document]
|
||||||
|
- ALTERNATIVES MENTIONED: [what else was considered]
|
||||||
|
- DECIDED BY: [who, if stated]
|
||||||
|
|
||||||
|
## Relationships to Other Documents
|
||||||
|
<!-- How this document connects to other known project documents -->
|
||||||
|
- SUPPORTS: [other document/decision it reinforces]
|
||||||
|
- CONTRADICTS: [other document/decision it conflicts with]
|
||||||
|
- DEPENDS ON: [other document/decision it requires]
|
||||||
|
- UPDATES: [other document/decision it supersedes]
|
||||||
|
|
||||||
|
## Open Questions & Ambiguities
|
||||||
|
<!-- Things that are NOT resolved in this document -->
|
||||||
|
- UNCLEAR: [what is ambiguous] — needs clarification from [whom]
|
||||||
|
- ASSUMED: [interpretation made] — verify with [whom]
|
||||||
|
- MISSING: [information referenced but not provided]
|
||||||
|
|
||||||
|
## Verbatim Quotes Worth Preserving
|
||||||
|
<!-- 2-5 direct quotes that capture stakeholder language, priorities, or constraints
|
||||||
|
These are critical for proposals — use the client's own words back to them -->
|
||||||
|
- "[exact quote]" — [speaker/author], [context]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template 2: Analysis / Research Summary
|
||||||
|
|
||||||
|
**Use when:** Completing competitive analysis, market research, technical evaluation
|
||||||
|
|
||||||
|
**Write to:** `./docs/summaries/analysis-[topic].md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Analysis Summary: [Topic]
|
||||||
|
**Completed:** [YYYY-MM-DD]
|
||||||
|
**Analysis Type:** [competitive / market / technical / financial / feasibility]
|
||||||
|
**Sources Used:** [list source paths or URLs]
|
||||||
|
**Confidence:** [high / medium / low — and WHY this confidence level]
|
||||||
|
|
||||||
|
## Core Finding (One Sentence)
|
||||||
|
[Single sentence: the most important conclusion]
|
||||||
|
|
||||||
|
## Evidence Base
|
||||||
|
<!-- Specific data points supporting the finding. Exact numbers only. -->
|
||||||
|
| Data Point | Value | Source | Date of Data |
|
||||||
|
|-----------|-------|--------|-------------|
|
||||||
|
| [metric] | [exact value] | [source] | [date] |
|
||||||
|
|
||||||
|
## Detailed Findings
|
||||||
|
### Finding 1: [Name]
|
||||||
|
- WHAT: [the finding]
|
||||||
|
- SO WHAT: [why it matters for this project]
|
||||||
|
- EVIDENCE: [specific supporting data]
|
||||||
|
- CONFIDENCE: [high/medium/low]
|
||||||
|
|
||||||
|
### Finding 2: [Name]
|
||||||
|
[same structure]
|
||||||
|
|
||||||
|
## Conditional Conclusions
|
||||||
|
<!-- Use IF/THEN format -->
|
||||||
|
- IF [condition], THEN [conclusion], BECAUSE [evidence]
|
||||||
|
- IF [alternative condition], THEN [different conclusion]
|
||||||
|
|
||||||
|
## What This Analysis Does NOT Cover
|
||||||
|
<!-- Explicit scope boundaries to prevent future sessions from over-interpreting -->
|
||||||
|
- [topic not addressed and why]
|
||||||
|
- [data not available]
|
||||||
|
|
||||||
|
## Recommended Next Steps
|
||||||
|
1. [action] — priority [high/medium/low], depends on [what]
|
||||||
|
2. [action]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template 3: Decision Record
|
||||||
|
|
||||||
|
**Use when:** Any significant decision is made during a session
|
||||||
|
|
||||||
|
**Write to:** `./docs/summaries/decision-[number]-[topic].md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Decision Record: [Short Title]
|
||||||
|
**Decision ID:** DR-[sequential number]
|
||||||
|
**Date:** [YYYY-MM-DD]
|
||||||
|
**Status:** CONFIRMED / PROVISIONAL / REQUIRES_VALIDATION
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
[One clear sentence: what was decided]
|
||||||
|
|
||||||
|
## Context
|
||||||
|
[2-3 sentences: what situation prompted this decision]
|
||||||
|
|
||||||
|
## Rationale
|
||||||
|
- CHOSE [option] BECAUSE: [specific reasons with data]
|
||||||
|
- REJECTED [alternative 1] BECAUSE: [specific reasons]
|
||||||
|
- REJECTED [alternative 2] BECAUSE: [specific reasons]
|
||||||
|
|
||||||
|
## Quantified Impact
|
||||||
|
- [metric affected]: [expected change with numbers]
|
||||||
|
- [cost/time/resource implication]: [specific figures]
|
||||||
|
|
||||||
|
## Conditions & Constraints
|
||||||
|
- VALID IF: [conditions under which this decision holds]
|
||||||
|
- REVISIT IF: [triggers that should cause reconsideration]
|
||||||
|
- DEPENDS ON: [upstream decisions or facts this relies on]
|
||||||
|
|
||||||
|
## Stakeholder Input
|
||||||
|
- [name/role]: [their stated position, if known]
|
||||||
|
|
||||||
|
## Downstream Effects
|
||||||
|
- AFFECTS: [what other decisions, documents, or deliverables this impacts]
|
||||||
|
- REQUIRES UPDATE TO: [specific files or deliverables that need revision]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template 4: Session Handoff
|
||||||
|
|
||||||
|
**Use when:** A session is ending (context limit approaching OR phase complete)
|
||||||
|
|
||||||
|
**Write to:** `./docs/summaries/handoff-[YYYY-MM-DD]-[topic].md`
|
||||||
|
|
||||||
|
**LIFECYCLE**: After writing a new handoff, move the PREVIOUS handoff to `docs/archive/handoffs/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Session Handoff: [Topic]
|
||||||
|
**Date:** [YYYY-MM-DD]
|
||||||
|
**Session Duration:** [approximate]
|
||||||
|
**Session Focus:** [one sentence]
|
||||||
|
**Context Usage at Handoff:** [estimated percentage if known]
|
||||||
|
|
||||||
|
## What Was Accomplished
|
||||||
|
<!-- Be specific. Include file paths for every output. -->
|
||||||
|
1. [task completed] → output at `[file path]`
|
||||||
|
2. [task completed] → output at `[file path]`
|
||||||
|
|
||||||
|
## Exact State of Work in Progress
|
||||||
|
<!-- If anything is mid-stream, describe exactly where it stopped -->
|
||||||
|
- [work item]: completed through [specific point], next step is [specific action]
|
||||||
|
- [work item]: blocked on [specific issue]
|
||||||
|
|
||||||
|
## Decisions Made This Session
|
||||||
|
<!-- Reference decision records if created, otherwise summarize here -->
|
||||||
|
- DR-[number]: [decision] (see `./docs/summaries/decision-[file]`)
|
||||||
|
- [Ad-hoc decision]: [what] BECAUSE [why] — STATUS: [confirmed/provisional]
|
||||||
|
|
||||||
|
## Key Numbers Generated or Discovered This Session
|
||||||
|
<!-- Every metric, estimate, or figure produced. Exact values. -->
|
||||||
|
- [metric]: [value] — [context for where/how this was derived]
|
||||||
|
|
||||||
|
## Conditional Logic Established
|
||||||
|
<!-- Any IF/THEN/BUT/EXCEPT reasoning that future sessions must respect -->
|
||||||
|
- IF [condition] THEN [approach] BECAUSE [rationale]
|
||||||
|
|
||||||
|
## Files Created or Modified
|
||||||
|
| File Path | Action | Description |
|
||||||
|
|-----------|--------|-------------|
|
||||||
|
| `[path]` | Created | [what it contains] |
|
||||||
|
| `[path]` | Modified | [what changed and why] |
|
||||||
|
|
||||||
|
## What the NEXT Session Should Do
|
||||||
|
<!-- Ordered, specific instructions. The next session starts by reading this. -->
|
||||||
|
1. **First**: [specific action with file paths]
|
||||||
|
2. **Then**: [specific action]
|
||||||
|
3. **Then**: [specific action]
|
||||||
|
|
||||||
|
## Open Questions Requiring User Input
|
||||||
|
<!-- Do NOT proceed on these without explicit user confirmation -->
|
||||||
|
- [ ] [question] — impacts [what downstream deliverable]
|
||||||
|
- [ ] [question]
|
||||||
|
|
||||||
|
## Assumptions That Need Validation
|
||||||
|
<!-- Things treated as true this session but not confirmed -->
|
||||||
|
- ASSUMED: [assumption] — validate by [method/person]
|
||||||
|
|
||||||
|
## What NOT to Re-Read
|
||||||
|
<!-- Prevent the next session from wasting context on already-processed material -->
|
||||||
|
- `[file path]` — already summarized in `[summary file path]`
|
||||||
|
|
||||||
|
## Files to Load Next Session
|
||||||
|
<!-- Explicit index of what the next session should read. Acts as progressive disclosure index layer. -->
|
||||||
|
- `[file path]` — needed for [reason]
|
||||||
|
- `[file path]` — needed for [reason]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template 5: Project Brief (Initial Setup)
|
||||||
|
|
||||||
|
**Use when:** Creating the 00-project-brief.md at project start
|
||||||
|
|
||||||
|
**Write to:** `./docs/summaries/00-project-brief.md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Project Brief: [Project Name]
|
||||||
|
**Created:** [YYYY-MM-DD]
|
||||||
|
**Last Updated:** [YYYY-MM-DD]
|
||||||
|
|
||||||
|
## Client
|
||||||
|
- **Name:** [client name]
|
||||||
|
- **Industry:** [industry]
|
||||||
|
- **Size:** [employee count / revenue if known]
|
||||||
|
- **Relationship:** [through AutomatonsX / Lagrange Data / direct / other]
|
||||||
|
- **Key Contacts:** [names and roles if known]
|
||||||
|
|
||||||
|
## Engagement
|
||||||
|
- **Type:** [proposal / workshop / competitive analysis / agent development / hybrid]
|
||||||
|
- **Scope:** [one paragraph description]
|
||||||
|
- **Target Deliverable:** [specific output expected]
|
||||||
|
- **Timeline:** [deadline if known]
|
||||||
|
- **Budget Context:** [if known — exact figures]
|
||||||
|
|
||||||
|
## Input Documents
|
||||||
|
| Document | Path | Processed? | Summary At |
|
||||||
|
|----------|------|-----------|------------|
|
||||||
|
| [name] | `[path]` | Yes/No | `[summary path]` |
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
- [criterion 1]
|
||||||
|
- [criterion 2]
|
||||||
|
|
||||||
|
## Known Constraints
|
||||||
|
- [constraint 1]
|
||||||
|
- [constraint 2]
|
||||||
|
|
||||||
|
## Project Phase Tracker
|
||||||
|
| Phase | Status | Summary File | Date |
|
||||||
|
|-------|--------|-------------|------|
|
||||||
|
| Discovery | Not Started / In Progress / Complete | `[path]` | |
|
||||||
|
| Strategy | Not Started / In Progress / Complete | `[path]` | |
|
||||||
|
| Deliverable Draft | Not Started / In Progress / Complete | `[path]` | |
|
||||||
|
| Review & Polish | Not Started / In Progress / Complete | `[path]` | |
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template 6: Task Definition
|
||||||
|
|
||||||
|
**Use when:** Defining a discrete unit of work before starting execution
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Task: [name]
|
||||||
|
**Date:** [YYYY-MM-DD]
|
||||||
|
**Client:** [if applicable]
|
||||||
|
**Work Type:** [proposal / workshop / analysis / content / agent development]
|
||||||
|
|
||||||
|
### Context Files to Load
|
||||||
|
- `[file path]` — [why needed]
|
||||||
|
|
||||||
|
### Action
|
||||||
|
[What to produce. Be specific about format, length, and scope.]
|
||||||
|
|
||||||
|
### Verify
|
||||||
|
- [ ] Numbers match source data exactly
|
||||||
|
- [ ] Open questions marked OPEN
|
||||||
|
- [ ] Output matches what was requested, not what was assumed
|
||||||
|
- [ ] Claims backed by specific data
|
||||||
|
- [ ] Consistent with stored decisions in docs/context/
|
||||||
|
|
||||||
|
### Done When
|
||||||
|
- [ ] Output file exists at `[specific path]`
|
||||||
|
- [ ] Summary written to `docs/summaries/[specific file]`
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Subagent Output Contracts
|
||||||
|
|
||||||
|
**CRITICAL: When subagents return results to the main agent, unstructured prose causes information loss. These output contracts define the EXACT format subagents must return.**
|
||||||
|
|
||||||
|
### Contract for Document Analysis Subagent
|
||||||
|
|
||||||
|
```
|
||||||
|
=== DOCUMENT ANALYSIS OUTPUT ===
|
||||||
|
SOURCE: [file path]
|
||||||
|
TYPE: [document type]
|
||||||
|
CONFIDENCE: [high/medium/low]
|
||||||
|
|
||||||
|
NUMBERS:
|
||||||
|
- [metric]: [exact value]
|
||||||
|
[repeat for all numbers found]
|
||||||
|
|
||||||
|
REQUIREMENTS:
|
||||||
|
- REQ: [requirement] | CONDITION: [if any] | PRIORITY: [level] | CONSTRAINT: [if any]
|
||||||
|
[repeat]
|
||||||
|
|
||||||
|
DECISIONS_REFERENCED:
|
||||||
|
- DEC: [what] | WHY: [rationale] | BY: [who]
|
||||||
|
[repeat]
|
||||||
|
|
||||||
|
CONTRADICTIONS:
|
||||||
|
- [this document says X] CONTRADICTS [other known fact Y]
|
||||||
|
[repeat or NONE]
|
||||||
|
|
||||||
|
OPEN:
|
||||||
|
- [unresolved item] | NEEDS: [who/what to resolve]
|
||||||
|
[repeat or NONE]
|
||||||
|
|
||||||
|
QUOTES:
|
||||||
|
- "[verbatim]" — [speaker], [context]
|
||||||
|
[repeat, max 5]
|
||||||
|
|
||||||
|
=== END OUTPUT ===
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contract for Research/Analysis Subagent
|
||||||
|
|
||||||
|
```
|
||||||
|
=== RESEARCH OUTPUT ===
|
||||||
|
QUERY: [what was researched]
|
||||||
|
SOURCES: [list]
|
||||||
|
CONFIDENCE: [high/medium/low] BECAUSE [reason]
|
||||||
|
|
||||||
|
CORE_FINDING: [one sentence]
|
||||||
|
|
||||||
|
EVIDENCE:
|
||||||
|
- [data point]: [exact value] | SOURCE: [where] | DATE: [when]
|
||||||
|
[repeat]
|
||||||
|
|
||||||
|
CONCLUSIONS:
|
||||||
|
- IF [condition] THEN [conclusion] | EVIDENCE: [reference]
|
||||||
|
[repeat]
|
||||||
|
|
||||||
|
GAPS:
|
||||||
|
- [what was not found or not covered]
|
||||||
|
[repeat or NONE]
|
||||||
|
|
||||||
|
NEXT_STEPS:
|
||||||
|
- [recommended action] | PRIORITY: [level]
|
||||||
|
[repeat]
|
||||||
|
|
||||||
|
=== END OUTPUT ===
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contract for Review/QA Subagent
|
||||||
|
|
||||||
|
```
|
||||||
|
=== REVIEW OUTPUT ===
|
||||||
|
REVIEWED: [file path or deliverable name]
|
||||||
|
AGAINST: [what standard — spec, requirements, style guide]
|
||||||
|
|
||||||
|
PASS: [yes/no/partial]
|
||||||
|
|
||||||
|
ISSUES:
|
||||||
|
- SEVERITY: [critical/major/minor] | ITEM: [description] | LOCATION: [where in document] | FIX: [suggested resolution]
|
||||||
|
[repeat]
|
||||||
|
|
||||||
|
MISSING:
|
||||||
|
- [expected content/section not found] | REQUIRED_BY: [which requirement]
|
||||||
|
[repeat or NONE]
|
||||||
|
|
||||||
|
INCONSISTENCIES:
|
||||||
|
- [item A says X] BUT [item B says Y] | RESOLUTION: [suggested]
|
||||||
|
[repeat or NONE]
|
||||||
|
|
||||||
|
STRENGTHS:
|
||||||
|
- [what works well — for positive reinforcement in iteration]
|
||||||
|
[max 3]
|
||||||
|
|
||||||
|
=== END OUTPUT ===
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase-Based Workflow Templates
|
||||||
|
|
||||||
|
### Template A: Enterprise Sales Deliverable
|
||||||
|
|
||||||
|
```
|
||||||
|
Phase 1: Discovery & Input Processing
|
||||||
|
├── Process all client documents → Source Document Summaries
|
||||||
|
├── Identify gaps in information → flag as OPEN items
|
||||||
|
├── Create Decision Records for any choices made
|
||||||
|
├── Write: ./docs/summaries/01-discovery-complete.md (Handoff Template)
|
||||||
|
├── → Suggest new session for Phase 2
|
||||||
|
|
||||||
|
Phase 2: Strategy & Positioning
|
||||||
|
├── Read summaries only (NOT source documents)
|
||||||
|
├── Competitive positioning analysis → Analysis Summary
|
||||||
|
├── Value proposition development
|
||||||
|
├── ROI framework construction with EXACT numbers
|
||||||
|
├── Write: ./docs/summaries/02-strategy-complete.md (Handoff Template)
|
||||||
|
├── → Suggest new session for Phase 3
|
||||||
|
|
||||||
|
Phase 3: Deliverable Creation
|
||||||
|
├── Read strategy summary + project brief only
|
||||||
|
├── Draft deliverable (proposal / deck / workshop plan)
|
||||||
|
├── Output to: ./output/deliverables/
|
||||||
|
├── Write: ./docs/summaries/03-deliverable-draft.md (Handoff Template)
|
||||||
|
├── → Suggest new session for Phase 4
|
||||||
|
|
||||||
|
Phase 4: Review & Polish
|
||||||
|
├── Read draft deliverable + strategy summary
|
||||||
|
├── Quality review using Review/QA Output Contract
|
||||||
|
├── Final edits and formatting
|
||||||
|
├── Output final version to: ./output/deliverables/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Template B: Agent/Application Development
|
||||||
|
|
||||||
|
```
|
||||||
|
Phase 1: Requirements → Spec
|
||||||
|
├── Process all input documents → Source Document Summaries
|
||||||
|
├── Generate structured specification
|
||||||
|
├── Output: ./output/SPEC.md
|
||||||
|
├── Write: ./docs/summaries/01-spec-complete.md (Handoff Template)
|
||||||
|
├── → Suggest new session for Phase 2
|
||||||
|
|
||||||
|
Phase 2: Architecture → Schema
|
||||||
|
├── Read SPEC.md + summaries only
|
||||||
|
├── Design data model
|
||||||
|
├── Define agent behaviors and workflows
|
||||||
|
├── Output: ./output/schemas/data-model.yaml
|
||||||
|
├── Output: ./output/schemas/agent-definitions.yaml
|
||||||
|
├── Write: ./docs/summaries/02-architecture-complete.md (Handoff Template)
|
||||||
|
├── → Suggest new session for Phase 3
|
||||||
|
|
||||||
|
Phase 3: Prompts → Integration
|
||||||
|
├── Read schemas + spec only
|
||||||
|
├── Write system prompts for each agent
|
||||||
|
├── Map API integrations and data flows
|
||||||
|
├── Output: ./output/prompts/[agent-name].md (one per agent)
|
||||||
|
├── Output: ./output/schemas/integration-map.yaml
|
||||||
|
├── Write: ./docs/summaries/03-prompts-complete.md (Handoff Template)
|
||||||
|
├── → Suggest new session for Phase 4
|
||||||
|
|
||||||
|
Phase 4: Assembly → Package
|
||||||
|
├── Read all output files
|
||||||
|
├── Assemble complete application package
|
||||||
|
├── Generate deployment/setup instructions
|
||||||
|
├── Output: ./output/deliverables/[project]-complete-package/
|
||||||
|
├── QA check against original spec using Review/QA Output Contract
|
||||||
|
```
|
||||||
|
|
||||||
|
### Template C: Hybrid (Sales + Agent Development)
|
||||||
|
|
||||||
|
```
|
||||||
|
Phase 1: Client Discovery → Summaries
|
||||||
|
Phase 2: Solution Design → Architecture + Schema
|
||||||
|
Phase 3a: Client-Facing Deliverable (proposal/deck)
|
||||||
|
Phase 3b: Internal Technical Package (schemas/prompts)
|
||||||
|
Phase 4: Review both tracks against each other for consistency
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## End of Templates
|
||||||
|
|
||||||
|
**Return to your task after reading the template(s) you need. Do not keep this file in active context.**
|
||||||
Reference in New Issue
Block a user