eforge-build/eforge/eforge-extend
Claude Code and agent skill by eforge-build/eforge
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
Author eforge TypeScript extensions from a natural-language request using the existing extension tooling and docs/examples
Install
npx vskill@latest install eforge-build/eforge/eforge-extendSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
/eforge:extend
Author eforge TypeScript extensions from a natural-language request using the existing extension tooling, docs, and examples. The workflow is conversational: classify the requested behavior, scaffold with eforge_extension, edit the returned file with normal file tools, validate, optionally replay-test, reload, and summarize trust/security notes.
Workflow
Step 1: Argument intake
- If
$ARGUMENTSis missing or empty, ask what eforge behavior the user wants to add and stop until they answer. - Generate a kebab-case extension name from the request.
- Ask for a name only when the generated name is ambiguous or conflicts with an existing extension.
Step 2: Required context read
Before scaffolding or editing, read these required eforge docs. Prefer the repository-local paths below when they exist; in an installed consumer project where they are not present, use the same documents from https://eforge.build/docs/extensions, https://eforge.build/docs/extensions-api, and https://github.com/eforge-build/eforge/tree/main/examples/extensions.
docs/extensions.mddocs/extensions-api.mdexamples/extensions/README.md
Then read relevant examples based on the classified capability:
examples/extensions/minimal-event-logger.tsfor event hooks.examples/extensions/slack-webhook-notifier.tsfor webhook/notification hooks.examples/extensions/agent-context.tsfor prompt context.examples/extensions/agent-tools.tsfor custom agent tools.examples/extensions/profile-router.tsfor profile selection.examples/extensions/protected-paths.tsfor runtime-supported plan/final merge policy gates.examples/extensions/issue-tracker.tsfor runtime-supported input source adapters (GitHub, Linear, Jira).examples/extensions/reviewer-perspective.tsfor runtime-supported reviewer perspectives with declarative file-pattern applicability.
Step 3: Capability classification
Classify the requested behavior before choosing a template or editing code.
Runtime-supported capability families:
onEventevent subscriptions and event replay.onAgentRunprompt context, per-run tools, and per-run allowed/disallowed tuning.defineExtensionTool+registerTool+ returningtoolsfromonAgentRunfor runtime custom tool injection.registerToolalone is provenance capture; runtime tool injection requires returning the tool fromonAgentRun.registerProfileRouterpre-build profile selection.registerRuntimeChoiceRouterper-invocation tier-local runtime choice selection after declarativeagents.tiers.<tier>.routing.rulesdecline to match.beforeQueueDispatch,beforePlanMerge, andbeforeFinalMergeblocking policy gates.require-approvalcurrently blocks because no approval workflow/UI/state exists, and policy gate contexts are read-only snapshots. These helpers do not sandbox extension code; extensions are trusted unsandboxed code.registerInputSourceinput source adapters — supply PRD/build-source artifacts from external systems viaeforge://input/<adapter>/<id>URIs. Adapter selection is bynamematch. Input-source failures (null return or throw) are fatal to enqueue; design adapters to return instructional content when credentials are absent.registerPrdEnricherPRD enrichers — mutate or augment PRD content before queue write. Enrichers run in registration order for every preprocessed source; failures are fail-open (extension:prd-enricher:failed). Gate behavior insideenrichusingctx.sourceKind,ctx.adapterId, orctx.sourcePath.registerReviewerPerspectivereviewer perspectives — inject custom prompt context into the reviewer agent during parallel review-cycle perspective dispatch (review.strategy: parallel, orautoonce the diff crosses the parallel-review thresholds). Applicability is declared viaappliesTo.fileGlobs,paths,extensions,categories, orminChanged*thresholds; a function-formappliesTo.fn(changedFiles, changedLines)escape hatch is also available. Applicability inputs are read-only snapshots; perspectives cannot mutate orchestration state. Failures are fail-open (extension:reviewer-perspective:skippedwith reasonapplicability-errororapplicability-timeout). Seeexamples/extensions/reviewer-perspective.tsfor an accessibility example.registerValidationProvidervalidation providers — run during the per-planvalidatebuild stage whenvalidateis included in the pipeline. Normal structured failures and command-form non-zero exits enter bounded recovery; thrown errors, non-empty string returns, timeouts, and unexpected shapes are hard failures.registerAction,registerAgentTask,registerConsoleContribution,registerConsoleWorkstation,registerIntegrationCommand, andregisterDeepLinkare platform seams for extension-authored actions, prompt-backed task contribution declarations, and host-facing contributions. Actions, integration commands, and action-backed deep links are discoverable, inspectable, and invokable by host integrations througheforge_extension_contribution; declarative Console contributions render in the Console System route (/console/system). Console workstations render under/console/workstationsas sandboxed iframes from either inlinesrcDocorframeBundleassets underworkstation-assets/.srcDocworkstations usewindow.eforge.invokeAction; bundle workstation code imports the browser-safe@eforge-build/extension-sdk/browserhelpers and runs inside the iframe/action bridge boundary, not the parent Console. Contribution registrations may declare dependency/capabilityrequirements; manifest entries includeavailability, and unavailable actions are rejected with error codeunavailable.registerAgentTaskrecords trusted prompt sources (assetorexport) and projects only safe metadata; task-start callers reference contributions and do not provide prompt paths, raw prompt text, or resolver functions. Contribution-reference task starts execute for registered planner-compatible task contributions; unsupported or non-compatible starts fail without prompt-path fallback. Action handlers receive immutablectx.dependencies/ctx.capabilitiesavailability lookups, daemon-ownedctx.agentTasksfor supported single-shot read-only planner tasks,ctx.buildQueue.enqueuefor trusted queue handoffs, including genericpostMergecommand arrays, andctx.profiles.listfor read-only shared agent runtime profile listing. Actions that enqueue should declare thebuild-queueside effect. Actions may declareoutputProfile(agent-compact,agent-paginated,markdown,ui-rich, ordebug-rich); id-shaped broad list/search/board read actions with array-shaped outputs produce warning diagnostics when they lack limit or cursor/page controls, or when array-shaped output schemas omit an explicit profile, but still register.agent-paginatedactions with limit and cursor/page controls are considered bounded for agent use without separate projection controls. Host tools render compact contribution lists by default with whole-entry returned/total/next-offset continuation metadata, expose focused detail/show modes for schemas and diagnostics, render exact{ markdown }outputs as Markdown/plain text, and summarize oversized JSON with warnings, identity fields, counts, omitted counts, and cursor/offset hints;ui-richanddebug-richalso warn in coding-agent hosts even when they fit. Pi tool text uses a 12,000-character host-output budget, andeforge_extensionreturns compact extension-management projections by default instead of raw discovery objects. MCP/Pi agents should page througheforge_extension_contributionlist results, then call show for selected contribution details; reserve raw HTTP/CLI--jsonstyle reads as a fallback for intentional rich/debug inspection when list/show is insufficient. Extension dependency/capability lookup reports availability only and does not invoke other extensions. Extensions do not import provider SDKs orAgentHarness, cannot send arbitrary raw prompt templates through task starts, and cannot implement multi-turn chat through that API. Raw extension-owned HTTP routes, parent-Console plugins, direct React loading into the parent Console, private Console imports/CSS/context, extension-owned AI planning/chat APIs outsidectx.agentTasks, and arbitrary frontend bundles outside the workstation frame/asset contract remain unsupported.- First-party workflow extensions and built-in session-planning surfaces remain separate from user-authored native extension registration points.
Runtime-deferred capability families:
beforeEnqueueandbeforeValidationpolicy gates.- Approval workflow/UI/state and
modifypolicy decisions. - User-authored custom workflow extraction, raw extension-owned HTTP routes, parent-Console plugins, direct parent Console React/private import loading, extension-owned AI planning/chat APIs outside
ctx.agentTasks, caller-supplied arbitrary raw prompt templates, multi-turn chat, and arbitrary frontend plugin bundles outside registered workstation iframes.
If user intent maps to the supported policy-gate, reviewer-perspective, validation-provider, extension-action, or agent-task-contribution declaration subset, explain that the capability executes or projects at runtime as described above, and note the parallel-review condition for reviewer perspectives, validate-stage/recovery behavior for validation providers, daemon invocation boundary for actions, or manifest-only status for task contributions. If user intent maps to deferred APIs, state whether the current SDK provides only a type contract or a captured registration, and that it will not execute at runtime yet. Ask whether to omit that portion or include it as a clearly labeled future-facing registration. Avoid promising that deferred capability families will enqueue, approve, mutate, provide raw HTTP/frontend surfaces, extract workflows, or run unsupported validation phases at runtime.
Step 4: Scope selection
- Default to
scope: "local"for experiments and project-local personal behavior; this targets.eforge/extensions/. - Use
scope: "user"only for explicit cross-project personal extensions. - Use
scope: "project"only for explicit team-shared extensions. Project/team extensions (eforge/extensions/) are unsandboxed arbitrary code committed to the repository; they require an explicit per-extension local trust record in.eforge/extension-trust.json— created byeforge extension trust <name>— before loading. Any subsequent code change invalidates the stored hash and blocks the extension until re-trusted. Warn the user of these implications before proceeding.
Step 4b: Package install workflow (when user requests installing a packaged extension)
If the user asks to install an extension from an npm package, local package directory, or tarball rather than authoring one from scratch, use the following workflow instead of Steps 5-6:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 93 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpackages/pi-eforge/skills/eforge-extend/SKILL.md
Popularity
- Repository stars
- 69
- Repository forks
- 4
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/eforge-build/eforge/eforge-extend)