312 lines
7.6 KiB
Markdown
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
|