--- 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