Skip to content

Complete Feature Creation

Ali Sadeghi edited this page May 28, 2026 · 4 revisions

Complete Feature Creation

End-to-end workflow for building a new feature with the creating-kmp-feature skill.

Input

> Create product catalog feature with list, search, and detail screens

Process Flow

Phase 0: Context Discovery (auto)
✓ PKG_PREFIX: thisissadeghi
✓ INIT_KOIN_PATH: composeApp/src/commonMain/kotlin/thisissadeghi/kmpilot/initKoin.kt
✓ NAV_HOST_PATH: composeApp/src/commonMain/kotlin/thisissadeghi/kmpilot/BaseAppNavHost.kt

Phase 1: Design Artifact Detection
✓ No blueprint for "productcatalog" → normal mode

Phase 2: PRD Generation
✓ Generated: .claude/docs/productcatalog/prd.md
→ user approval required

Phase 3: Task Generation
✓ Generated: .claude/docs/productcatalog/tasks.md
→ user approval required

Activate hook marker: touch /tmp/.claude-kmpilot-skill-active

Phase 4: Implementation (parallel)
✓ data-layer-agent complete (12 files created)
✓ ui-layer-agent  complete (8 files created)
✓ integration-agent complete (spec + 4 integration points)

Phase 5: Cleanup
✓ Removed prd.md, tasks.md, task-*.md
✓ Kept spec: .claude/docs/productcatalog/spec.md

Remove hook marker: rm -f /tmp/.claude-kmpilot-skill-active

✅ Feature Complete
   Next: navController.navigate(ProductCatalogRoute)

Generated Files

Data layer (from data-layer-agent)

feature/productcatalog/build.gradle.kts
feature/productcatalog/src/commonMain/kotlin/{pkg}/productcatalog/
├── data/
│   ├── model/Product.kt                          # @Serializable DTO
│   ├── remote/ProductResources.kt                # Ktor Resources
│   ├── datasource/
│   │   ├── ProductRemoteDataSource.kt            # interface
│   │   └── ProductRemoteDataSourceImpl.kt
│   └── repository/
│       ├── ProductRepository.kt                  # interface
│       └── ProductRepositoryImpl.kt

UI layer (from ui-layer-agent)

feature/productcatalog/src/commonMain/kotlin/{pkg}/productcatalog/
├── presentation/
│   ├── ProductCatalogUiModel.kt
│   ├── ProductCatalogViewModel.kt                # uses setState { copy() }
│   ├── ui/
│   │   ├── ProductCatalogScreen.kt               # Screen + ScreenRoot + state routing
│   │   └── components/                            # self-contained units
│   └── navigation/
│       └── ProductCatalogNavigation.kt           # Route + NavGraphBuilder extension

Integration (from integration-agent)

feature/productcatalog/src/commonMain/kotlin/{pkg}/productcatalog/
└── di/ProductCatalogModules.kt                   # object : BaseFeature

Modified:

  • settings.gradle.kts
  • composeApp/build.gradle.kts
  • initKoin.kt (adds ProductCatalogModules.initialize())
  • BaseAppNavHost.kt (adds productcatalog(...) call)

Living spec:

  • .claude/docs/productcatalog/spec.md

Design-Aware Variant

If a Stitch design blueprint exists at .claude/docs/productcatalog/designs/productcatalog_blueprint.md with blueprintConsumed: false:

Phase 1: Design Artifact Detection
✓ Blueprint found → entering design-aware mode

Phase 4:
✓ XTheme updated (missing M3 roles added to both schemes)
✓ X-Component Constraint Check completed
✓ UI implemented from blueprint Component Tree
✓ Post-Implementation Checklist verified

Phase 5:
✓ blueprintConsumed set to true in stitch-project.json

See Design-Pipeline for the full design → implement → verify flow.

See Also


Back to Workflows

Clone this wiki locally