Analyze course transcript files (.srt) to discover teachable projects. Use when you need to scan a course folder and identify what hands-on projects are taught, without generating any code. Outputs a manifest file that can be used later for selective project generation. Triggers on phrases like "discover projects", "analyze course", "find projects in transcripts", "what projects are in this course".
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Analyze course transcripts (.srt files) to discover and catalog projects taught in the course. Produces a manifest file (project-findings.json) that can be used for immediate or future project generation.
.srt filesFirst, check for existing progress.json in the course root:
// Check states:
// 1. progress.json exists with status="complete" → Course already processed
// 2. progress.json exists with status="started" → Incomplete, restart
// 3. No progress.json → Fresh course, proceedIf status is "complete": Inform user the course was already processed. Ask if they want to re-run discovery.
If status is "started": Previous run was interrupted. Clean up any partial CODE/__CC_Projects/ folder and restart.
If no progress.json: Create it with status "started":
{
"status": "started",
"started_at": "2025-01-15T10:30:00.000Z",
"completed_at": null
}Scan the course directory for all .srt files:
find . -name "*.srt" -type f | grep -v "CODE/" | sortSRT files may be:
./01_Intro.srt, ./02_Basics.srt./Module1/01_Setup.srt, ./Module2/03_Functions.srtCollect all paths relative to course root.
Read each SRT file in sorted order (order matters for tracking project continuity).
For each file, analyze content to determine:
PROJECT STARTS when instructor:
PROJECT CONTINUES when:
PROJECT ENDS when:
SKIP (non-project content):
For each discovered project, record:
| Field | Description |
|---|---|
id | Unique identifier (e.g., proj_001) |
name | Simple name from transcript (e.g., "TodoApp") |
synthesized_name | Full name for folder (e.g., "Project_ReactTodoWithPersistence") |
description | 1-2 sentence description |
source_srts | Array of SRT files containing this project |
tech_stack | Detected technologies |
complexity | beginner / intermediate / advanced |
generation_status | "not_started" (always for new discovery) |
Create project-findings.json in course root:
{
"course_path": "/absolute/path/to/course",
"discovered_at": "2025-01-15T10:30:00.000Z",
"discovery_version": "1.0",
"has_projects": true,
"projects": [
{
"id": "proj_001",
"name": "TodoApp",
"synthesized_name": "Project_ReactTodoWithPersistence",
"description": "A React todo application with local storage persistence",
"source_srts": ["03_TodoApp_Part1.srt", "04_TodoApp_Part2.srt", "05_TodoApp_Part3.srt"],
"tech_stack": ["React", "JavaScript", "CSS", "LocalStorage"],
"complexity": "beginner",
"generation_status": "not_started",
"generated_at": null,
"output_path": null
},
{
"id": "proj_002",
"name": "AuthSystem",
"synthesized_name": "Project_ReactAuthWithJWT",
"description": "JWT-based authentication system with refresh tokens",
"source_srts": ["07_AuthPart1.srt", "08_AuthPart2.srt"],
"tech_stack": ["React", "Node.js", "Express", "JWT", "MongoDB"],
"complexity": "intermediate",
"generation_status": "not_started",
"generated_at": null,
"output_path": null
}
],
"skipped_srts": [
"01_Introduction.srt",
"02_ReactBasics.srt",
"06_StateTheory.srt",
"09_Conclusion.srt"
],
"no_project_reason": null
}If no projects found:
{
"course_path": "/absolute/path/to/course",
"discovered_at": "2025-01-15T10:30:00.000Z",
"discovery_version": "1.0",
"has_projects": false,
"projects": [],
"skipped_srts": ["all_files.srt"],
"no_project_reason": "Course is purely conceptual with no hands-on coding projects"
}After writing the manifest, present findings to user:
## Discovery Complete
**Course**: /path/to/ReactMasterclass
**Projects Found**: 2
### Project 1: TodoApp
- **Generated Name**: Project_ReactTodoWithPersistence
- **Description**: A React todo application with local storage persistence
- **Source Files**: 03_TodoApp_Part1.srt, 04_TodoApp_Part2.srt, 05_TodoApp_Part3.srt
- **Tech Stack**: React, JavaScript, CSS, LocalStorage
- **Complexity**: Beginner
### Project 2: AuthSystem
- **Generated Name**: Project_ReactAuthWithJWT
- **Description**: JWT-based authentication system with refresh tokens
- **Source Files**: 07_AuthPart1.srt, 08_AuthPart2.srt
- **Tech Stack**: React, Node.js, Express, JWT, MongoDB
- **Complexity**: Intermediate
**Skipped Files**: 01_Introduction.srt, 02_ReactBasics.srt, 06_StateTheory.srt, 09_Conclusion.srt
---
Manifest saved to: project-findings.json
To generate all projects, use the project-generator skill.
To generate specific projects, specify by name or ID.progress.json and project-findings.jsonPattern: Project_[Framework][CoreFeature][Distinguisher]
Examples:
Project_ReactTodoWithLocalStorageProject_NodeExpressRestAPIProject_PythonFlaskBlogAuthProject_VueEcommerceCartRules:
Project_Look for mentions of:
| Category | Examples |
|---|---|
| Languages | JavaScript, TypeScript, Python, Java, Go, Rust |
| Frontend | React, Vue, Angular, Svelte, Next.js |
| Backend | Express, Fastify, Django, Flask, FastAPI |
| Databases | PostgreSQL, MySQL, MongoDB, SQLite, Redis |
| Tools | Webpack, Vite, Docker, npm, yarn |
| Level | Indicators |
|---|---|
| Beginner | Single file or few files, basic CRUD, no auth, minimal dependencies |
| Intermediate | Multiple components, state management, basic auth, API integration |
| Advanced | Complex architecture, multiple services, OAuth/JWT, real-time features |
See references/ folder for:
discovery-patterns.md - Detailed patterns for identifying projectsmanifest-schema.md - Complete JSON schema for project-findings.jsond74a957
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.