원클릭으로
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 직업 분류 기준
| 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-paramsGenerate 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