Grounds every implementation decision in official/API documentation. Use when you want authoritative, source-cited code free from outdated patterns; when official/API docs such as DeepSeek, SDK/provider references, framework docs, changelog-sensitive behavior, fast-changing/version-sensitive sources, model uncertainty, or explicit user-requested verification can materially affect a方案 before implementation.
Instalación
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Grounds every implementation decision in official/API documentation. Use when you want authoritative, source-cited code free from outdated patterns; when official/API docs such as DeepSeek, SDK/provider references, framework docs, changelog-sensitive behavior, fast-changing/version-sensitive sources, model uncertainty, or explicit user-requested verification can materially affect a方案 before implementation.
Source-Driven Development
Overview
Every framework-specific code decision must be backed by official documentation. Don't implement from memory — verify, cite, and let the user see your sources. Training data goes stale, APIs get deprecated, best practices evolve. This skill ensures the user gets code they can trust because every pattern traces back to an authoritative source they can check.
When to Use
The user wants code that follows current best practices for a given framework
Building boilerplate, starter code, or patterns that will be copied across a project
The user explicitly asks for documented, verified, or "correct" implementation
Implementing features where the framework's recommended approach matters (forms, routing, data fetching, state management, auth)
Reviewing or improving code that uses framework-specific patterns
Any time you are about to write framework-specific code from memory
Planning a方案 or implementation where official/API documentation can materially change the approach, including provider APIs such as DeepSeek, SDK/API references, packaging/runtime/platform constraints, changelog-sensitive behavior, or model uncertainty
The user explicitly asks to research, verify, source, compare, or confirm current API behavior before implementation
When NOT to use:
Correctness does not depend on a specific version (renaming variables, fixing typos, moving files)
Pure logic that works the same across all versions (loops, conditionals, data structures)
The user explicitly wants speed over verification ("just do it quickly") and the task does not involve version-sensitive framework/API/library behavior
Planning Evidence Gate Ownership
This skill owns the official/API documentation lane of the research-first planning gate. It does not own local repository evidence, mature public-project prior art, test-plan generation, or lifecycle orchestration:
local repository facts and peer patterns belong to repo-evidence-first
industry/GitHub/mature project patterns belong to mature-project-pattern-research
user-facing方案 clarification and write-back readiness belong to requirements-grilling
testability and durable test-plan artifacts belong to test-document-generator
lifecycle timing stays with the active delivery workflow; do not create a new public command or standalone lifecycle-owner skill
When this gate triggers, gather official/current evidence first, summarize the evidence-backed方案 with risks and UNVERIFIED items, then implement only after the方案 is accepted, waived, or explicitly accepted as UNVERIFIED by the user. Use external web or Context7 lookup only when the current user, task, or project contract allows source lookup, and never send secrets or sensitive context; when external lookup is not allowed, use local/offline docs and mark remaining source gaps UNVERIFIED.
The Process
DETECT ──→ FETCH ──→ IMPLEMENT ──→ CITE
│ │ │ │
▼ ▼ ▼ ▼
What Get the Follow the Show your
stack? relevant documented sources
docs patterns
Step 1: Detect Stack and Versions
Read the project's dependency file to identify exact versions:
STACK DETECTED:
- React 19.1.0 (from package.json)
- Vite 6.2.0
- Tailwind CSS 4.0.3
→ Fetching official docs for the relevant patterns.
If versions are missing or ambiguous, ask the user. Don't guess — the version determines which patterns are correct.
Step 2: Fetch Official Documentation
Fetch the specific documentation page for the feature you're implementing. Not the homepage, not the full docs — the relevant page.
For library/API documentation, setup commands, framework examples, provider behavior such as DeepSeek APIs, SDK references, packaging/runtime/platform constraints, changelog-sensitive behavior, or version-sensitive code, prefer Context7 when it is installed in the current OpenCode environment. Do not require the user to manually say "use context7" each time. Do not assume Context7 is installed; if it is unavailable, fall back to official docs, package documentation, and source references. Do not add or rely on a repository-local Context7 skill.
Speed requests may reduce citation verbosity, but they do not remove the required source/evidence check for version-sensitive framework, API, or library behavior. If correctness depends on the detected version, verify the source first and then summarize citations briefly.
Source-fetch fallback ladder:
Trigger
Next source
If still unavailable
Context7 is unavailable or has no matching library/version
Fetch the official documentation URL directly
Use the package's official README/changelog/release notes from the upstream repository
Official docs page is unavailable, moved, or lacks the needed pattern
Check official blog, migration guide, API reference, or versioned docs
Mark the pattern UNVERIFIED and ask before implementing version-sensitive code
Package docs and source disagree
Prefer versioned docs, then inspect installed package types/source for the detected version
Surface the discrepancy as a conflict; do not silently choose
Network/tooling prevents source access
Use only already-present local docs/types/package files
Report BLOCKED_VERIFICATION or NEEDS_REVIEW for framework-specific code that cannot be sourced
🔴 CHECKPOINT / 🛑 STOP: If no authoritative source can confirm a version-sensitive API, stop before coding unless the user explicitly accepts an UNVERIFIED implementation.
Not authoritative — never cite as primary sources:
Stack Overflow answers
Blog posts or tutorials (even popular ones)
AI-generated documentation or summaries
Your own training data (that is the whole point — verify it)
Be precise with what you fetch:
BAD: Fetch the React homepage
GOOD: Fetch react.dev/reference/react/useActionState
BAD: Search "django authentication best practices"
GOOD: Fetch docs.djangoproject.com/en/6.0/topics/auth/
After fetching, extract the key patterns and note any deprecation warnings or migration guidance.
When official sources conflict with each other (e.g. a migration guide contradicts the API reference), surface the discrepancy to the user and verify which pattern actually works against the detected version.
Step 3: Implement Following Documented Patterns
Write code that matches what the documentation shows:
Use the API signatures from the docs, not from memory
If the docs show a new way to do something, use the new way
If the docs deprecate a pattern, don't use the deprecated version
If the docs don't cover something, flag it as unverified
When docs conflict with existing project code:
CONFLICT DETECTED:
The existing codebase uses useState for form loading state,
but React 19 docs recommend useActionState for this pattern.
(Source: react.dev/reference/react/useActionState)
Options:
A) Use the modern pattern (useActionState) — consistent with current docs
B) Match existing code (useState) — consistent with codebase
→ Which approach do you prefer?
Surface the conflict. Don't silently pick one.
🔴 CHECKPOINT / 🛑 STOP: If documented best practice conflicts with existing project conventions, compatibility constraints, or tests, pause with options before editing. The user must choose whether to follow current docs, preserve local patterns, or defer the change.
Step 4: Cite Your Sources
Every framework-specific pattern gets a citation. The user must be able to verify every decision.
In code comments:
// React 19 form handling with useActionState// Source: https://react.dev/reference/react/useActionState#usageconst [state, formAction, isPending] = useActionState(submitOrder, initialState);
In conversation:
I'm using useActionState instead of manual useState for the
form submission state. React 19 replaced the manual
isPending/setIsPending pattern with this hook.
Source: https://react.dev/blog/2024/12/05/react-19#actions
"useTransition now supports async functions [...] to handle
pending states automatically"
Citation rules:
Full URLs, not shortened
Prefer deep links with anchors where possible (e.g. /useActionState#usage over /useActionState) — anchors survive doc restructuring better than top-level pages
Quote the relevant passage when it supports a non-obvious decision
Include browser/runtime support data when recommending platform features
If you cannot find documentation for a pattern, say so explicitly:
UNVERIFIED: I could not find official documentation for this
pattern. This is based on training data and may be outdated.
Verify before using in production.
Honesty about what you couldn't verify is more valuable than false confidence.
Common Rationalizations
Rationalization
Reality
"I'm confident about this API"
Confidence is not evidence. Training data contains outdated patterns that look correct but break against current versions. Verify.
"Fetching docs wastes tokens"
Hallucinating an API wastes more. The user debugs for an hour, then discovers the function signature changed. One fetch prevents hours of rework.
"The docs won't have what I need"
If the docs don't cover it, that's valuable information — the pattern may not be officially recommended.
"I'll just mention it might be outdated"
A disclaimer doesn't help. Either verify and cite, or clearly flag it as unverified. Hedging is the worst option.
"This is a simple task, no need to check"
Simple tasks with wrong patterns become templates. The user copies your deprecated form handler into ten components before discovering the modern approach exists.
Red Flags
Writing framework-specific code without checking the docs for that version
Using "I believe" or "I think" about an API instead of citing the source
Implementing a pattern without knowing which version it applies to
Citing Stack Overflow or blog posts instead of official documentation
Using deprecated APIs because they appear in training data
Not reading package.json / dependency files before implementing
Delivering code without source citations for framework-specific decisions
Fetching an entire docs site when only one page is relevant
Do Not Do
Do not use Stack Overflow, tutorials, AI summaries, or memory as the primary authority for framework-specific code.
Do not hide missing docs behind hedging language like "probably" or "should work"; label it UNVERIFIED.
Do not keep coding through a docs/code conflict without a visible checkpoint and user decision.
Do not add a repository-local docs tool or Context7 skill as a workaround for unavailable documentation tooling.
Do not cite a source you did not actually read for the detected version or feature.
Verification
After implementing with source-driven development:
Framework and library versions were identified from the dependency file
Official documentation was fetched for framework-specific patterns
Official/API docs were checked when provider, SDK, platform, packaging, changelog-sensitive, fast-changing, uncertain, or user-requested verification could affect the方案
All sources are official documentation, not blog posts or training data
Evidence-backed方案 was discussed/accepted, waived, or marked UNVERIFIED before implementation when the planning gate triggered
Code follows the patterns shown in the current version's documentation
Non-trivial decisions include source citations with full URLs
No deprecated APIs are used (checked against migration guides)
Conflicts between docs and existing code were surfaced to the user
Anything that could not be verified is explicitly flagged as unverified