Source driven development
Version-aware, source-driven development — fetch official docs before writing framework codeFrom its SKILL.md
npx -y skills add galando/temper --skill source-driven-developmentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.8 KB, as published. Nobody here has run it
Source-Driven Development
Version: 1.0.0 Last Updated: 2026-05-12
Overview
Source-driven development ensures that framework-specific code is written against current official documentation, not stale training data. AI models often generate code using deprecated APIs, wrong parameter orders, or patterns from older versions. This skill enforces a verification loop:
Detect version → Fetch current docs → Write code with citations → Surface conflicts
This skill leverages the Context7 MCP server (if available) to fetch version-specific documentation at build time.
When to Use
/temper:buildor/temper:fixwriting framework-specific code (React, Spring Boot, Express, FastAPI, etc.)- Adding or updating a dependency
- Writing code that uses a library API you haven't used recently
- Whenever the agent says "I believe the API works like..."
Skip when:
- Writing plain logic (no framework dependency)
- Writing tests for code you just read (you already have the source)
- Modifying config files with known structure
Process
Step 1: Read Manifest
Detect the project's dependencies and versions:
- JavaScript/TypeScript: Read
package.json— extractdependenciesanddevDependencies - Java: Read
pom.xmlorbuild.gradle— extract dependency versions - Python: Read
pyproject.tomlorrequirements.txt— extract pinned versions - Go: Read
go.mod— extract module versions - Rust: Read
Cargo.toml— extract dependency versions
For the specific library you're about to use, note the exact version installed.
Step 2: Fetch Current Documentation
If the Context7 MCP server is available:
- Resolve the library ID:
mcp__plugin_context7_context7__resolve-library-idwith the library name - Query for the specific API:
mcp__plugin_context7_context7__query-docswith:libraryIdfrom step 1querydescribing the specific API or pattern you need
- Read the returned documentation snippets
If Context7 is NOT available:
- Fall back to web search for
{library} v{version} {api} documentation - Use
mcp__web_reader__webReaderto fetch the official docs page - This is
[HEURISTIC]rather than[PROVEN]— note the evidence level
Step 3: Cite Sources
When writing framework-specific code, include a citation comment:
// Ref: React 19 useActionState — https://react.dev/reference/react/useActionState
const [state, submitAction, isPending] = useActionState(async (prevState, formData) => {
// ...
}, initialState);
Or in Java:
// Ref: Spring Data JDBC 3.4 @Query — https://docs.spring.io/spring-data/jdbc/reference/repositories/query-methods.html
@Query("SELECT * FROM users WHERE email = :email")
Optional<User> findByEmail(@Param("email") String email);
Citation format: {framework} v{version} {api/function} — {url}
Step 4: Surface Conflicts
After fetching docs, compare against what you were about to write:
- API signature changed? — parameters added, removed, or reordered
- Deprecated pattern? — the pattern you planned to use is now deprecated
- New recommended approach? — a better pattern exists in the current version
- Breaking change? — the version in the project has a breaking change from what training data suggests
If a conflict is found:
- BLOCK if the planned code would use a removed API
- WARN if the planned code uses a deprecated but still functional API
- SUGGEST if a newer pattern exists but the old one still works
Step 5: Authority Hierarchy
When multiple documentation sources conflict, use this hierarchy:
- Official docs (react.dev, docs.spring.io, fastapi.tiangolo.com) — highest authority
- Type definitions (DefinitelyTyped, built-in .d.ts) — mechanical truth
- Source code (GitHub repo, node_modules) — ground truth but may be internal
- Community (Stack Overflow, blog posts) — useful for patterns, not API signatures
- Training data (what the model "knows") — lowest authority, always verify
Rationalizations
| Rationalization | Why It's Wrong |
|---|---|
| "I know this API — I've used it before" | APIs change between versions. React 18 hooks != React 19 hooks. Verify. |
| "The docs will just confirm what I already know" | Then verification takes 10 seconds. Do it. Unexpected deprecations are common. |
| "I can just check if the test passes" | Tests prove the code runs, not that it uses the recommended approach. Deprecated APIs pass tests today and break tomorrow. |
| "Looking up docs slows me down" | Writing the wrong API and debugging for 30 minutes is slower than a 10-second doc check. |
| "The codebase already uses this pattern" | The codebase may be on an older version. Your task might be the one that should update the pattern. |
Red Flags
Watch for these signs that source-driven development would have prevented a problem:
- "Property X does not exist on type Y" — you used an API from a different version
- "Warning: X is deprecated, use Y instead" — you used training-data knowledge, not current docs
- Test passes but runtime behavior differs — API contract changed subtly between versions
- Code works locally but fails in CI — dependency version mismatch between environments
- Import not found — the module was reorganized in a newer version
Verification
After writing framework-specific code:
- Did you include a citation comment? If not, add one.
- Does the cited URL actually contain the API you used? Verify, don't hallucinate URLs.
- Does the code match the version in the manifest? Not the latest version — the installed version.
- Were there any conflicts surfaced in Step 4? If so, were they resolved?