From hanakai-yaku
Orchestrates the full Hanami slice lifecycle: creates the slice, tests it in isolation, reviews boundary design, and supports extraction from the app module. Use when building a new Hanami slice, auditing existing slices for bounded context violations, extracting monolithic code into a modular architecture, or enforcing slice generator conventions. Trigger terms: bounded context, Hanami module, modular architecture, slice boundaries, slice extraction, slice generator.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hanakai-yaku:slice-lifecycleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Orchestrates the full slice lifecycle: from creation through testing, boundary review, and extraction. Chains four phases with hard gates between them.
Orchestrates the full slice lifecycle: from creation through testing, boundary review, and extraction. Chains four phases with hard gates between them.
bundle exec hanami generate slice <name>
Expected output structure:
slices/
└── <name>/
├── action.rb
├── actions/
├── lib/
│ └── <name>/
│ ├── operations/
│ ├── repositories/
│ └── views/
└── config/
Quality Check:
Example action spec (RSpec):
# spec/slices/<name>/actions/index_spec.rb
RSpec.describe <Name>::Actions::Index do
let(:app) { <Name>::Slice.rack_app }
it "returns 200" do
get "/"
expect(last_response.status).to eq(200)
end
end
Run the slice in isolation:
HANAMI_SLICE=<name> bundle exec rspec spec/slices/<name>/
HARD GATE — Tests Pass in Isolation:
All slice tests MUST pass with only the target slice loaded.
DO NOT proceed if cross-slice dependencies cause test failures.
Fix isolation issues before continuing.
Boundary Violation vs. Valid Cross-Slice Call:
# ❌ Direct import — VIOLATION
require "slices/billing/lib/billing/repositories/invoice_repo"
# ✅ Public API call — CORRECT
Hanami.app["billing.actions.invoices.create"].call(params)
HARD GATE — Boundaries Verified:
NO Critical boundary violations may remain unaddressed.
Every Critical finding must have a resolution plan.
DO NOT proceed with unaddressed isolation breaches.
Deps keys and require paths after moving files:
# Before (app module)
include Deps["repositories.users"]
# After (inside target slice)
include Deps["<name>.repositories.users"]
bundle exec rspec
| Scenario | Recovery |
|---|---|
| Slice creation fails (missing directory) | Verify the parent slices/ directory exists. Check permissions. |
| Tests fail due to cross-slice imports | Identify the violating import. Replace with public API call or refactor. |
| Boundary review finds critical violation | Document the finding, assign an owner, create a resolution plan. |
| Extraction breaks existing tests | Check namespace changes. Verify Deps keys and require paths were updated. |
| Slice has no clear bounded context | Ask: "What single domain does this slice serve?" If unclear, reconsider extraction. |
## Slice Lifecycle Complete: [Slice Name]
### Phase 1 — Creation
- Slice: `slices/[name]/`
- Actions: [N] defined
- Internal structure: operations, repositories, relations, views
### Phase 2 — Testing
- Action specs: [N] passing
- Operation specs: [N] passing
- Repository specs: [N] passing
- Isolation: Verified / Issues Found
### Phase 3 — Boundary Review
- Critical findings: [N]
- Suggestions: [N]
- Notes: [N]
- Overall health: Good / Needs attention
### Phase 4 — Extraction (if applicable)
- Files moved: [N]
- Namespaces updated: [N]
- Tests passing after extraction: [N]/[N]
npx claudepluginhub igmarin/hanakai-yakuGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.