tags:
- ai
- systems
- project-management
- workflow
- crewai
- obsidian
- vscode status: active created: <% tp.file.creation_date() %> purpose: To document the primary AI-orchestrated workflow for moving projects from ideation to execution.
Agentic Project Management Workflow
Section titled “Agentic Project Management Workflow”This document outlines the architecture and process for using a crew of AI agents to accelerate project planning and execution. The core philosophy is to use local markdown files within this Obsidian vault as the “single source of truth” or “state” that human and AI collaborators read from and write to.
1. System Architecture
Section titled “1. System Architecture”The system is composed of three distinct but interconnected layers.
graph TD subgraph "Layer 1: Knowledge & State (The Truth)" A[<B>Obsidian Vault</B><br/>Markdown Files:<br/>- PRD.md<br/>- Plan.md<br/>- Tasks.md<br/>- Code Files] end
subgraph "Layer 2: Human Cockpit (The Interface)" B[<B>VS Code</B><br/>- Open Obsidian Vault<br/>- Text Editor<br/>- Integrated Terminal] --> C[<B>Continue.dev Extension</B><br/>- AI Chat & Commands<br/>- Inline Edits & Diffs] end
subgraph "Layer 3: Orchestration Engine (The Crew)" D[<B>CrewAI Script (.py)</B><br/>- Defines Agents (Planner, Coder)<br/>- Defines Tasks<br/>- Reads/Writes files] end
A -- "Read/Write" --> D D -- "Generates/Modifies" --> A B -- "Review & Refine" --> A C -- "AI-Assisted Editing" --> Bgraph TD subgraph "Layer 1: Knowledge & State (The Truth)" A[<B>Obsidian Vault</B><br/>Markdown Files:<br/>- PRD.md<br/>- Plan.md<br/>- Tasks.md<br/>- Code Files] end
subgraph "Layer 2: Human Cockpit (The Interface)" B[<B>VS Code</B><br/>- Open Obsidian Vault<br/>- Text Editor<br/>- Integrated Terminal] --> C[<B>Continue.dev Extension</B><br/>- AI Chat & Commands<br/>- Inline Edits & Diffs] end
subgraph "Layer 3: Orchestration Engine (The Crew)" D[<B>CrewAI Script (.py)</B><br/>- Defines Agents (Planner, Coder)<br/>- Defines Tasks<br/>- Reads/Writes files] end
A -- "Read/Write" --> D D -- "Generates/Modifies" --> A B -- "Review & Refine" --> A C -- "AI-Assisted Editing" --> B
- **Layer 1: Knowledge & State (Obsidian):** The foundation. All project artifacts (requirements, plans, tasks, code) live here as plain markdown files. This ensures the data is local, version-controllable, and accessible to both humans and machines.
- **Layer 2: Human Cockpit (VS Code + Continue):** This is our command center. We use VS Code to view and edit the markdown files directly. The Continue.dev extension provides the critical "human-in-the-loop" capability, allowing us to review, accept/reject, and refine AI-generated changes with diffs.
- **Layer 3: Orchestration Engine (CrewAI):** This is the automated workforce. A Python script using the CrewAI framework assembles a team of specialized AI agents, assigns them tasks, and directs them to read from and write to the files in our Obsidian vault.
## 2. The Standard Workflow
This process is designed to be a repeatable cycle for any new project or major feature.
1. **Define the Objective (Human Task):** In Obsidian or VS Code, create a detailed Product Requirements Document (e.g., 00_PRD.md). The more context, the better the AI output.
2. **Orchestrate the Crew (Trigger AI):** In the VS Code integrated terminal, run the master CrewAI Python script (e.g., run_project_planner.py).
3. **Agents Collaborate (Automated Task):**
- The PlannerAgent reads the 00_PRD.md.
- It generates a high-level strategic plan and saves it as 01_Plan.md.
- The TaskCreatorAgent reads the new 01_Plan.md.
- It breaks the plan down into a granular, actionable checklist and saves it as 02_Tasks.md.
4. **Review and Refine (Human-in-the-Loop):**
- Open the newly generated 01_Plan.md and 02_Tasks.md in VS Code.
- Use the Continue.dev extension (Ctrl+L or Cmd+L) to refine any part of the plan. Example prompt: "This task is too broad. Break it down into 3 sub-tasks for the backend API."
- Accept the diffs and save the files.
5. **Execute:** With a validated and refined task list, begin work. This could involve manually completing tasks (using Obsidian Tasks plugin) or triggering more specialized agents (e.g., a CodeWriterAgent) to work on specific tasks from the list.
## 3. Core Configuration & Scripts
These are the key code assets for the system.
<details><summary><b>Continue.dev `config.json`</b></summary>
Generated json
`{ "models": [ { "title": "Gemini 1.5 Pro", "provider": "google-palm", "model": "gemini-1.5-pro-latest", "apiKey": "YOUR_GEMINI_API_KEY" }, { "title": "GPT-4o Mini (Free)", "provider": "openai", "model": "gpt-4o-mini" } ], "customCommands": [ { "name": "plan", "prompt": "Review the following context and create a detailed project plan. Identify key milestones, potential risks, and resource requirements. Context: {{userInput}}", "description": "Create a project plan from context" }, { "name": "brainstorm", "prompt": "Brainstorm ideas based on the following topic. Think outside the box and provide at least 5 distinct concepts. Topic: {{userInput}}", "description": "Brainstorm ideas on a topic" } ] }`
IGNORE_WHEN_COPYING_START
Use code [with caution](https://support.google.com/legal/answer/13505487). Json
IGNORE_WHEN_COPYING_END
</details>
<details><summary><b>Project Directory & `.env` File</b></summary>
**Recommended Structure:**
Generated code
`/smart-debt-mission |-- 00_PRD.md |-- 01_Plan.md |-- 02_Tasks.md |-- 03_Work_In_Progress/ |-- run_project_planner.py |-- .env`
IGNORE_WHEN_COPYING_START
Use code [with caution](https://support.google.com/legal/answer/13505487).
IGNORE_WHEN_COPYING_END
**.env File:**
Generated code
`# Place API keys here. This file should be in your .gitignore. GOOGLE_API_KEY=your_gemini_api_key_here OPENAI_API_KEY=your_openai_api_key_here_if_needed`
IGNORE_WHEN_COPYING_START
Use code [with caution](https://support.google.com/legal/answer/13505487).
IGNORE_WHEN_COPYING_END
</details>
<details><summary><b>Example `run_project_planner.py` (CrewAI Script)</b></summary>
Generated python
``import os from dotenv import load_dotenv from crewai import Agent, Task, Crew, Process from crewai_tools import file_read_tool # Load environment variables for API keys load_dotenv() # --- FILE PATHS --- prd_file_path = './00_PRD.md' # --- TOOLS --- file_read_tool = file_read_tool.FileReadTool(file_path=prd_file_path) # --- AGENT DEFINITIONS --- planner = Agent( role='Senior Project Planner', goal='Create a comprehensive, high-level project plan based on the PRD. Include phases, milestones, and technology considerations.', backstory='You are an expert project planner with 20 years of experience in lean software development, turning ideas into structured, actionable plans.', verbose=True, tools=[file_read_tool] ) task_creator = Agent( role='Technical Task Creator', goal='Take a high-level project plan and break it down into a list of specific, granular technical tasks for developers.', backstory='You are a meticulous software engineer who is brilliant at decomposing large features into small, manageable development tasks.', verbose=True, allow_delegation=False ) # --- TASK DEFINITIONS --- planning_task = Task( description=f"Read the PRD document at '{prd_file_path}' and create a detailed project plan markdown file.", expected_output='A string containing the full project plan in markdown format, to be saved to `01_Plan.md`.', agent=planner, output_file='01_Plan.md' ) task_creation_task = Task( description="Read the project plan created by the planner. Break it down into a markdown checklist of developer tasks.", expected_output='A string containing a markdown checklist of all tasks, to be saved to `02_Tasks.md`.', agent=task_creator, output_file='02_Tasks.md' ) # --- CREW DEFINITION & KICKOFF --- project_crew = Crew( agents=[planner, task_creator], tasks=[planning_task, task_creation_task], process=Process.sequential, verbose=2 ) result = project_crew.kickoff() print("\\n✅ Crew work complete!")``
IGNORE_WHEN_COPYING_START
Use code [with caution](https://support.google.com/legal/answer/13505487). Python
IGNORE_WHEN_COPYING_END
</details>
## 4. Future Evolution
This system is designed to evolve.
- **Phase 2 (Execution):** Introduce a CodeWriterAgent that reads from 02_Tasks.md, writes code to the 03_Work_In_Progress/ directory, and marks the task as complete.
- **Phase 3 (Complexity):** When conditional logic or loops are needed (e.g., "if code fails tests, send to debugger agent"), the system can be migrated from CrewAI to a more granular framework like **LangGraph**.