This document describes the architecture and workflows of the workspace.
This workspace implements a forkable agent architecture, designed to be used as a foundation for creating new agents. For details about:
- Forking process: See
knowledge/agent-forking.md
- Workspace structure: See
knowledge/forking-workspace.md
The workspace provides several ways to search and navigate content:
- Quick search:
# Find files containing term git grep -li <query> # Show matching lines git grep -i <query>
- Detailed search with context:
# Show matching lines ./scripts/search.sh "<query>" # Show with context ./scripts/search.sh "<query>" 1
- Common locations:
- tasks/all/ - Task details
- journal/ - Daily updates
- knowledge/ - Documentation
The task system is designed to help track and manage work effectively across sessions.
-
TASKS.md
- Main task registry
- Contains all tasks categorized by area
- Each task has a clear status indicator
- Links to task files in tasks/all/
-
Task Files
- All task files stored in
tasks/all/
as single source of truth - Task state managed via symlinks in state directories:
tasks/all/
: Contains all task filestasks/new/
: Symlinks to new taskstasks/active/
: Symlinks to tasks being worked ontasks/paused/
: Symlinks to temporarily paused taskstasks/done/
: Symlinks to completed taskstasks/cancelled/
: Symlinks to cancelled tasks
- Never modify task files directly in state directories, always modify in tasks/all/
- All task files stored in
-
CURRENT_TASK.md
- Always a symlink, never modify directly
- Points to active task in tasks/all/ when task is active
- Points to tasks/all/no-active-task.md when no task is active
- Updated using ln -sf command when switching tasks
-
Journal Entries
- Daily progress logs in
./journal/
- Each entry documents work done on tasks
- Includes reflections and next steps
- Daily progress logs in
-
Retrieval
- Retrieve context needed to plan the task using the search tools described in "Search & Navigation" above
- Review tasks/all/no-active-task.md if starting fresh
-
Creation
- Create new task file in tasks/all/
- Add symlink in tasks/new/:
ln -s ../all/taskname.md tasks/new/
- Add to TASKS.md with 🆕 status
- CURRENT_TASK.md remains linked to no-active-task.md
-
Activation
- Move symlink from new/ to active/:
mv tasks/new/taskname.md tasks/active/
- Update CURRENT_TASK.md symlink:
ln -sf tasks/all/taskname.md CURRENT_TASK.md
- Update status in TASKS.md to 🏃
- Create journal entry about starting task
- Move symlink from new/ to active/:
-
Progress Tracking
- Daily updates in journal entries
- Status updates in TASKS.md
- Subtask completion tracking
- All edits made to file in tasks/all/
-
Completion/Cancellation
- Update status in TASKS.md to ✅ or ❌
- Move symlink to done/ or cancelled/:
mv tasks/active/taskname.md tasks/done/
- Reset CURRENT_TASK.md to no-active-task.md:
ln -sf tasks/all/no-active-task.md CURRENT_TASK.md
- Final journal entry documenting outcomes
-
Pausing
- Move symlink from active/ to paused/:
mv tasks/active/taskname.md tasks/paused/
- Reset CURRENT_TASK.md to no-active-task.md:
ln -sf tasks/all/no-active-task.md CURRENT_TASK.md
- Update status in TASKS.md to ⏸️
- Document progress in journal
- Move symlink from active/ to paused/:
- 🆕 NEW: Task has been created
- 🏃 IN_PROGRESS: Task is being worked on
- ⏸️ PAUSED: Task was temporarily paused
- ✅ COMPLETED: Task has been completed
- ❌ CANCELLED: Task was cancelled
-
File Management
- Always treat tasks/all/ as single source of truth
- Never modify files directly in state directories
- Use proper symlink commands for state transitions
- Verify symlinks after state changes
- Keep no-active-task.md as template for inactive state
-
Document Linking
- Always link to referenced tasks and documents
- Use relative paths from repository root when possible
- Common links to include:
- Tasks mentioned in journal entries
- Related tasks in task descriptions
- People mentioned in any document
- Projects being discussed
- Knowledge base articles
- Use descriptive link text that makes sense out of context
-
Task Creation
- Use clear, specific titles
- Break down into manageable subtasks
- Include success criteria
- Link related resources
- Create files in tasks/all/ first, then symlink
-
Progress Updates
- Daily journal entries
- Regular status updates in TASKS.md
- Document blockers/issues
- Track dependencies
- All edits made to files in tasks/all/
-
Documentation
- Never modify CURRENT_TASK.md directly (it's a symlink)
- Cross-reference related tasks using paths relative to repository root
- Document decisions and rationale
- Link to relevant documents and resources
- Update knowledge base as needed
The journal system provides a daily log of activities, thoughts, and progress.
- One file per day:
YYYY-MM-DD.md
- Located in
./journal/
directory - Entries are to be appended, not overwritten
- Contains:
- Task progress updates
- Decisions and rationale
- Reflections and insights
- Plans for next steps
The knowledge base stores long-term information and documentation.
- Located in
./knowledge/
- Organized by topic/domain
- Includes:
- Technical documentation
- Best practices
- Project insights
- Reference materials
The people directory stores information about individuals the agent interacts with.
- Located in
./people/
- Contains:
- Individual profiles in Markdown format
- Templates for consistent profile creation
- Each profile includes:
- Basic information
- Contact details
- Interests and skills
- Project collaborations
- Notes and history
- Preferences
- TODOs and action items
-
Privacy
- Respect privacy preferences
- Only include publicly available information
- Maintain appropriate level of detail
-
Updates
- Keep interaction history current
- Update project collaborations
- Maintain active TODO lists
-
Organization
- Use consistent formatting via templates
- Cross-reference with projects and tasks
- Link to relevant knowledge base entries