open source
<objective> Find open-source solutions for $ARGUMENTS (or the current topic if no arguments provided).
Overview
Search for existing libraries, tools, and projects that solve the problem. Don't build what already exists. </objective>
<intake_gate>
<context_analysis> First, analyze $ARGUMENTS to extract what's already provided:
- What problem needs solving
- Language/framework requirements
- License requirements
- Integration constraints
Only ask about genuine gaps - don't re-ask what's already stated. </context_analysis>
<initial_questions> Use AskUserQuestion to ask 2-4 questions based on actual gaps:
If language unclear:
- "What language/framework?" with options: Python, JavaScript/Node, Swift, Go, Rust, Language agnostic, Other
If license unclear:
- "License requirements?" with options: Any open source, Permissive only (MIT/Apache), GPL OK, Commercial use required, Other
If maintenance unclear:
- "How important is maintenance?" with options: Must be actively maintained, Recent activity OK, Abandoned OK if it works, Other
If integration unclear:
- "Must integrate with?" with options: Nothing specific, Existing codebase, Specific framework, Other
Skip questions where $ARGUMENTS already provides the answer. </initial_questions>
<decision_gate> After receiving answers, use AskUserQuestion:
Question: "Ready to search for open-source solutions, or would you like me to ask more questions?"
Options:
- Start search - I have enough context
- Ask more questions - There are details to clarify
- Let me add context - I want to provide additional information
If "Ask more questions" → generate 2-3 contextual follow-ups, then present decision gate again If "Let me add context" → receive input, then present decision gate again If "Start search" → proceed to research </decision_gate>
</intake_gate>
<process> After intake complete:- Define what we need (problem, requirements, constraints)
- Search for open-source options
- Evaluate each option
- Verify maintenance status for each option:
- Check last commit date (not just "last updated" on package registry)
- Check issue response time (open recent issue, see if maintainers respond)
- Check contributor count and bus factor (is it one person or a team?)
- Flag if: last commit >1 year OR all commits from 1 person OR issues go unanswered
- Assess build vs. use tradeoffs
- Recommend best option or confirm need to build </process>
<output_format>
Open Source Research: [Need]
Strategic Summary
[2-3 sentences: what's available, recommendation, key consideration]
What we need
[Problem to solve, key requirements]
License requirements
[MIT/Apache/GPL-compatible/etc.]
Options Found
[Option 1: package-name]
- Repo: [GitHub URL]
- What it does: [Brief description]
- Stars/Downloads: [Popularity indicators]
- Last commit: [Date - from repo, not registry]
- Contributors: [Count - note if 1-person project]
- Issue response: [Active/Slow/Inactive - check recent issues]
- License: [License type]
- Fits our need: [Yes/Partial/No] - [why]
- Concerns: [Issues, gaps, risks]
[Option 2: package-name] [Same structure...]
[Option 3: package-name] [Same structure...]
Comparison
| Aspect | Option 1 | Option 2 | Option 3 |
|---|---|---|---|
| Solves problem | Y/Partial/N | ||
| Maintained | Y/N | ||
| License OK | Y/N | ||
| Easy to integrate | Y/N |
Build vs. Use Analysis
Use existing:
- Pros: [Proven solution, community support, faster start]
- Cons: [Less control, potential bloat, dependency risk]
Build custom:
- Pros: [Exact fit, full control, no dependencies]
- Cons: [Complexity to build, maintenance burden]
Recommendation: [Use Option X / Build custom] because [reasoning]
Implementation Context
<claude_context> <if_use>
- package: [exact package name and version]
- install: [installation command]
- docs: [documentation URL]
- examples: [example code or reference]
- gotchas: [known issues, quirks, workarounds] </if_use> <if_build>
- scope: [what to build]
- approach: [technical approach]
- reference: [can use Option X as reference for patterns]
- complexity: [S/M/L] </if_build> <integration>
- imports: [how to import/require]
- patterns: [usage patterns]
- testing: [how to test integration] </integration>
</claude_context>
Next Action: Prototype with chosen library, evaluate deeper, or spec out custom build
Sources
- [Source name/package]: [URL] - [date accessed]
- [Source name/package]: [URL] - [date accessed] </output_format>
<artifact_output> Save the research to a file:
-
Create directory structure if it doesn't exist:
[current-working-directory]/artifacts/research/
-
Generate filename from topic:
- Get current date in YYYY-MM-DD format
- Slugify the topic (lowercase, hyphens for spaces)
- Format:
YYYY-MM-DD-[topic]-open-source.md - Example:
2025-01-15-midi-libraries-open-source.md
-
Write the complete research to the file
-
Report to user: "Saved to
artifacts/research/[filename]" </artifact_output>
<success_criteria>
- Search is thorough (not just first result)
- Maintenance status is verified (not abandoned)
- License compatibility is checked
- Build vs. use tradeoff is honest
- Implementation context has exact package info Claude needs
- Recommendation saves complexity without creating technical debt
- Output saved to artifacts/research/ directory </success_criteria>