Files

312 lines
7.6 KiB
Markdown

---
name: project-init
description: Initialize a new project analysis. Creates directory structure, discovers relevant data sources (Zulip streams, git repos, meeting rooms), and writes datasources.md, background.md skeleton, and sync-state.md.
disable-model-invocation: true
argument-hint: [project-name]
---
# Initialize Project Analysis
**When to use:** Starting analysis of a new project. This skill sets up the project structure and discovers data sources. It does NOT gather historical data — use `/project-history` for that after reviewing the datasources.
## Step 1: Create Project Structure
```bash
mkdir -p projects/$0/timeline
```
## Step 2: Discover and Document Data Sources
Investigate what data sources exist for this project. Use the [connectors skill](../connectors/SKILL.md) and [company skill](../company/SKILL.md) for reference.
### Discovery process
1. **Zulip streams**: Search DataIndex for `threaded_conversation` entities matching the project name. Note which stream IDs appear. Cross-reference with the company skill's Zulip channel list to identify primary vs. secondary streams.
2. **Git repositories**: Ask the user for the repository URL, or search Gitea/GitHub if accessible.
3. **Meeting rooms**: Search DataIndex for `meeting` entities matching the project name. Note which `room_name` values appear — these are the relevant meeting rooms.
4. **Search terms**: Identify the project name, key technologies, and domain-specific terms that surface relevant data.
5. **Entity type priority**: Determine which entity types are most relevant (typically `threaded_conversation`, `meeting`, and possibly `email`).
### Write datasources.md
**File:** `projects/$0/datasources.md`
```markdown
# $0 - Data Sources
## Zulip Streams
### PRIMARY Streams (Analyze All)
| Stream ID | Name | Topics | Priority | What to Look For |
|-----------|------|--------|----------|------------------|
| XXX | stream-name | N topics | CRITICAL | Development discussions |
### SECONDARY Streams (Selective)
| Stream ID | Name | Topics to Analyze | Context |
|-----------|------|-------------------|---------|
| YYY | integration-stream | specific-topic | Integration work |
### EXCLUDE
- stream-id-1: reason
- stream-id-2: reason
## Git Repository
**URL:** https://...
**Commands:**
```
git clone {url} ./tmp/$0-clone
cd ./tmp/$0-clone
git log --format="%H|%an|%ae|%ad|%s" --date=short > commits.csv
git log --format="%an|%ae" | sort | uniq -c | sort -rn
```
## Meeting Rooms
### PRIMARY
- room-name: Project-specific discussions
### SECONDARY (Context Only)
- allhands: General updates
### EXCLUDE
- personal-rooms: Other projects
## Search Terms
### Primary
- project-name
- key-technology-1
### Technical
- architecture-term-1
### Deadline & Timeline Tracking
- deadline
- due date
- target date
- ETA
- "by when"
- "ship by"
- milestone
- launch date
- release date
- "when will"
- "when is"
- pushed back
- extended
- slipped
- delayed
- ahead of schedule
- behind schedule
## Entity Types Priority
1. threaded_conversation (Zulip)
2. meeting (recordings)
3. calendar_event (for deadline tracking)
4. [Exclude: email, document if not relevant]
## Deadline Discovery
During initial data gathering, search for deadline-related discussions:
- **Direct mentions**: "deadline", "due date", "target", "ETA", "launch date"
- **Timeline discussions**: When delivery dates are discussed or negotiated
- **Changes**: Deadline extensions, delays, accelerations
- **Commitments**: Statements like "we'll ship by X", "targeting Y for release"
Track these with dates, sources, and any context about rationale for changes.
```
## Step 3: Create Project Dashboard (Living Document)
**File:** `projects/$0/project.md`
This is the **entry point** — the living document showing current status.
```markdown
# $0 Project
**One-liner:** [Brief description]
**Status:** [Active/On Hold/Deprecated]
**Repository:** URL
**Last Updated:** [Date]
---
## This Week's Focus
### Primary Objective
[What the team is working on right now]
### Active Work
- [Current task 1]
- [Current task 2]
### Blockers
- [Any blockers]
---
## Last Week's Focus
### Delivered
- ✅ [What was completed]
### Decisions Made
- [Key decisions from last week]
---
## Team
### Core Contributors (Active)
| Name | Focus | Availability |
|------|-------|--------------|
| [Name] | [Area] | Full-time/Part-time |
### Occasional Contributors
- [Name] - [Role]
---
## Milestones
### In Progress 🔄
| Milestone | Target | Business Objective |
|-----------|--------|-------------------|
| [Name] | [Date] | [WHY this matters] |
### Recently Completed ✅
| Milestone | Date | Business Objective |
|-----------|------|-------------------|
| [Name] | [Date] | [WHY this mattered] |
### Lost in Sight / Paused ⏸️
| Milestone | Status | Reason |
|-----------|--------|--------|
| [Name] | Paused | [Why paused] |
---
## Deadline History
Track when deadlines were discussed, committed to, or changed. This shows the evolution of project timeline expectations.
### Current Commitments
| Deliverable | Current Target | Source | Confidence |
|-------------|---------------|--------|------------|
| [Feature/Milestone] | [Date] | [Meeting/Thread] | [High/Medium/Low] |
### Timeline Evolution
| Date | Change | Previous | New | Reason | Source |
|------|--------|----------|-----|--------|--------|
| [Date] | Extended | [Old Date] | [New Date] | [Why changed] | [Thread/Meeting] |
| [Date] | Committed | - | [Date] | [Initial commitment context] | [Thread/Meeting] |
---
## Recent Decisions
### Week [N] (Current)
- **[Decision]** - [Context]
### Week [N-1]
- **[Decision]** - [Context]
---
## Quick Links
- [📊 Timeline](./timeline/index.md) - Week-by-week history
- [📋 Background](./background.md) - Project architecture and details
- [🔌 Data Sources](./datasources.md) - How to gather information
- [⚙️ Sync State](./sync-state.md) - Last sync information
---
*This is a living document. It reflects the current state and changes frequently.*
```
## Step 4: Create Background Skeleton
**File:** `projects/$0/background.md`
Static/architecture information that rarely changes.
```markdown
# $0 - Background
**Type:** [Web app/Mobile app/Library/Service]
**Repository:** URL
## What is $0?
[Brief description of what the project does]
## Architecture
### Components
- Component 1 - Purpose
- Component 2 - Purpose
### Technology Stack
- Technology 1 - Usage
- Technology 2 - Usage
## Data Sources
See: [datasources.md](./datasources.md)
## Timeline Structure
Weekly timeline files are organized in `timeline/` directory.
## How This Project Is Updated
1. Gather Data: Query Zulip, Git, meetings
2. Update Timeline: Create week-by-week entries
3. Update Project Dashboard: Refresh [project.md](./project.md)
For current status, see: [project.md](./project.md)
```
## Step 4: Create Timeline Index
**File:** `projects/$0/timeline/index.md`
```markdown
# $0 Timeline Index
## Key Milestones
| Date | Milestone | Status |
|------|-----------|--------|
| [To be filled by project-history] | | |
## Summary by Quarter
[To be filled by project-history]
```
## Step 5: Initialize Sync State
**File:** `projects/$0/sync-state.md`
```markdown
# Sync State
status: initialized
created_at: [today's date]
last_sync_date: null
initial_history_from: null
initial_history_to: null
```
## Done
After this skill completes, the user should:
1. **Review `datasources.md`** — confirm the streams, repos, and meeting rooms are correct
2. **Edit `background.md`** — fill in any known project details
3. **Run `/project-history $0 [date-from] [date-to]`** — to build the initial historical timeline