بنقرة واحدة
create-component
Create a new Fx component using the modern def/fx/impl pattern (NOT legacy)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Create a new Fx component using the modern def/fx/impl pattern (NOT legacy)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Generate the Agent Supply Chain newsletter by researching team activity on GitHub and Confluence, then creating a Confluence draft and Gmail draft
Give your AI agents something more useful than a prompt. Velocity through clarity.
Extract an Allium specification from an existing codebase. Use when the user has existing code and wants to distil behaviour into a spec, reverse engineer a specification from implementation, generate a spec from code, turn implementation into a behavioural specification, or document what a codebase does in Allium terms.
Run a structured discovery session to build an Allium specification through conversation. Use when the user wants to create a new spec from scratch, elicit or gather requirements, capture domain behaviour, specify a feature or system, define what a system should do, or is describing functionality and needs help shaping it into a specification.
Generate tests from Allium specifications. Use when the user wants to propagate tests, generate test files from a spec, write tests for a specification, create property-based tests, produce state machine tests, check test coverage against spec obligations, or understand what tests a specification requires.
Autonomously work on Jira backlog tickets, creating PRs and shepherding them to merge
| name | create-component |
| description | Create a new Fx component using the modern def/fx/impl pattern (NOT legacy) |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep |
| argument-hint | <bundle>/<component-name> [--team team-name] [--with-params] [--with-lifecycle] [--with-mock] |
| model | sonnet |
Create a new Fx component following the modern (new-style) pattern with separate def/, fx/, and impl/ sub-packages.
IMPORTANT: NEVER use the legacy pattern (single-directory with fx.Provide directly). Always use the new-style pattern described below.
Parse $ARGUMENTS to determine:
<bundle>/<component-name>: e.g., core/remoteflags means bundle=core, component=remoteflags--team <team-name>: optional team ownership tag (default: ask the user)--with-params: include a Params struct in the def package--with-lifecycle: include compdef.Lifecycle in the Requires struct--with-mock: also generate a mock/ sub-packageAsk the user (if not provided via arguments):
// team: comment)Read reference examples before writing any code. Find a recent component under comp/ using the def/fx/impl pattern (e.g. comp/core/remoteagentregistry/). Read:
def/component.go — interface definition with // team: commentfx/fx.go — Module() with fxutil.ProvideComponentConstructorimpl/<name>.go — Requires/Provides structs, NewComponent constructorCreate the directory structure under comp/<bundle>/<component>/:
comp/<bundle>/<component>/
├── def/
│ ├── go.mod
│ ├── component.go # Interface definition + team tag
│ └── params.go # (optional) Params struct
├── fx/
│ ├── go.mod
│ └── fx.go # Module() function
└── impl/
├── go.mod
└── <component>.go # Requires, Provides, NewComponent()
Create each file following the patterns from the reference. Key rules:
def/component.go: Package name = component name, include // team: comment, only interfacesfx/fx.go: Use fxutil.ProvideComponentConstructor (NEVER raw fx.Provide), returns fxutil.Moduleimpl/<component>.go: Plain Go constructor func NewComponent(deps Requires) (Provides, error), no fx.In/fx.Out/compdef.In/compdef.Out embedding in Requires/Provides, unexported implementation typego.mod files: Use v0.0.0 for inter-module dependencies, match Go version from root go.modRegister the modules in modules.yml — add entries for def, fx, and impl (use default or used_by_otel: true).
Run dda inv create-module --path=comp/<bundle>/<component>/def (and for fx, impl) or manually add to modules.yml and run dda inv tidy.
Wire into a bundle if appropriate — add the component's Module() to the relevant comp/<bundle>/bundle.go.
Validate:
dda inv lint-components lint-fxutil-oneshot-test github.lint-codeowner
Fix any errors and re-run until clean.
DO: def/fx/impl sub-packages, fxutil.ProvideComponentConstructor, plain Go constructor, plain Requires/Provides structs, thin def package.
DON'T: Single directory, fx.Provide(newComponent), fx.In/fx.Out embedding, implementation in def package.
/create-component core/myfeature --team agent-runtimes --with-lifecycle/create-component metadata/hostinfo --team agent-metrics --with-params