version: 1
name: ukit-full-platform
autoDiscoverTemplates: false
description: >
  UKit full-platform manifest. Primary use: DuraOne coding skill (Nuxt3+Vue3 Options API,
  Python Sanic, PostgreSQL). Teammates should still only remember `ukit install`;
  DuraOne assets auto-install when strong DuraOne project signals are detected.

items:
  - id: docs-project
    type: config
    sourceTemplate: docs/PROJECT.md
    targetPath: docs/PROJECT.md
    requires: []
    mergeStrategy: skip
    variables:
      - project.name
    enabledByDefault: true
    packs:
      - core

  - id: docs-memory
    type: config
    sourceTemplate: docs/MEMORY.md
    targetPath: docs/MEMORY.md
    requires: []
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: runtime-readme
    type: config
    sourceTemplate: ukit/README.md
    targetPath: .ukit/README.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: runtime-config
    type: config
    sourceTemplate: ukit/storage/config.json
    targetPath: .ukit/storage/config.json
    requires:
      - runtime-readme
    mergeStrategy: overwrite_with_backup
    variables:
      - ukit.version
    enabledByDefault: true
    packs:
      - core

  - id: runtime-cache
    type: config
    sourceTemplate: ukit/storage/cache
    targetPath: .ukit/storage/cache
    requires:
      - runtime-config
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: runtime-memory
    type: config
    sourceTemplate: ukit/storage/memory
    targetPath: .ukit/storage/memory
    requires:
      - runtime-readme
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: root-claude-md
    type: config
    sourceTemplate: CLAUDE.md
    targetPath: CLAUDE.md
    requires:
      - docs-project
      - docs-memory
    mergeStrategy: overwrite_with_backup
    variables:
      - project.name
      - project.root
      - project.stack
      - stack.frontend
      - stack.backendApi
      - stack.postgres
      - runtime.packageManager
      - runtime.os
      - runtime.nodeVersion
      - providers.unic
      - ukit.version
    enabledByDefault: true
    packs:
      - core

  - id: root-agents-md
    type: config
    sourceTemplate: AGENTS.md
    targetPath: AGENTS.md
    requires:
      - docs-project
      - docs-memory
    mergeStrategy: overwrite_with_backup
    # Same set as root-claude-md: AGENTS.md is the same body with a different H1 plus one
    # OpenCode-only section, so it interpolates the same variables. Kept in sync by
    # tests/consistency/contextDocsParity.test.js.
    variables:
      - project.name
      - project.root
      - project.stack
      - stack.frontend
      - stack.backendApi
      - stack.postgres
      - runtime.packageManager
      - runtime.os
      - runtime.nodeVersion
      - providers.unic
      - ukit.version
    enabledByDefault: true
    packs:
      - core

  - id: docs-worklog
    type: config
    sourceTemplate: docs/WORKLOG.md
    targetPath: docs/WORKLOG.md
    requires: []
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docs-code-map
    type: config
    sourceTemplate: docs/CODE_MAP.md
    targetPath: docs/CODE_MAP.md
    requires:
      - docs-project
    mergeStrategy: skip
    variables:
      - project.name
    enabledByDefault: true
    packs:
      - core

  - id: docs-ai-handoff
    type: config
    sourceTemplate: docs/AI_HANDOFF
    targetPath: docs/AI_HANDOFF
    requires:
      - docs-project
      - docs-memory
      - docs-worklog
      - docs-code-map
    mergeStrategy: skip
    variables:
      - project.name
    enabledByDefault: true
    packs:
      - core

  - id: docs-bugfix
    type: config
    sourceTemplate: docs/BUGFIX.md
    targetPath: docs/BUGFIX.md
    requires:
      - docs-memory
      - docs-code-map
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docs-bug-template
    type: config
    sourceTemplate: docs/BUG_TEMPLATE.md
    targetPath: docs/BUG_TEMPLATE.md
    requires:
      - docs-bugfix
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docs-bug-index
    type: config
    sourceTemplate: docs/BUG_INDEX.md
    targetPath: docs/BUG_INDEX.md
    requires:
      - docs-bug-template
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docs-bug-metrics
    type: config
    sourceTemplate: docs/BUG_METRICS.md
    targetPath: docs/BUG_METRICS.md
    requires:
      - docs-bug-index
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: core-skill-delivery
    type: skill
    sourceTemplate: .claude/skills/delivery/SKILL.md
    targetPath: .claude/skills/delivery/SKILL.md
    requires:
      - docs-project
      - docs-memory
    mergeStrategy: overwrite_with_backup
    variables:
      - project.name
      - stack.frontend
      - stack.backendApi
      - stack.postgres
    enabledByDefault: true
    packs:
      - core

  - id: docker-packaging-skill
    type: skill
    sourceTemplate: .claude/skills/docker-packaging/SKILL.md
    targetPath: .claude/skills/docker-packaging/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  # ── DuraOne — Primary skill pack ──────────────────────────────────
  # Phong cách code cá nhân của LeNK: Nuxt3+Vue3 Options API,
  # Python Sanic, PostgreSQL (varchar/numeric/boolean only)
  # Still keep the human workflow to one command: `ukit install`.
  # These assets auto-install only when the detected project packs include `duraone`,
  # so non-DuraOne projects still keep a lighter baseline.
  - id: duraone-skill
    type: skill
    sourceTemplate: .claude/skills/duraone/SKILL.md
    targetPath: .claude/skills/duraone/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - duraone

  - id: duraone-ref-frontend
    type: skill
    sourceTemplate: .claude/skills/duraone/references/frontend.md
    targetPath: .claude/skills/duraone/references/frontend.md
    requires:
      - duraone-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - duraone

  - id: duraone-ref-backend
    type: skill
    sourceTemplate: .claude/skills/duraone/references/backend.md
    targetPath: .claude/skills/duraone/references/backend.md
    requires:
      - duraone-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - duraone

  - id: duraone-ref-sql
    type: skill
    sourceTemplate: .claude/skills/duraone/references/sql.md
    targetPath: .claude/skills/duraone/references/sql.md
    requires:
      - duraone-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - duraone

  - id: duraone-ref-workflow
    type: skill
    sourceTemplate: .claude/skills/duraone/references/workflow.md
    targetPath: .claude/skills/duraone/references/workflow.md
    requires:
      - duraone-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - duraone
  # ──────────────────────────────────────────────────────────────────

  - id: frontend-pack-skill
    type: skill
    sourceTemplate: .claude/skills/frontend/SKILL.md
    targetPath: .claude/skills/frontend/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables:
      - stack.frontend
    enabledByDefault: true
    packs:
      - frontend

  - id: frontend-vue-pack-skill
    type: skill
    sourceTemplate: .claude/skills/frontend-vue
    targetPath: .claude/skills/frontend-vue
    requires:
      - frontend-pack-skill
    mergeStrategy: overwrite_with_backup
    variables:
      - stack.frontend
    enabledByDefault: true
    packs:
      - frontend

  - id: backend-api-pack-skill
    type: skill
    sourceTemplate: .claude/skills/backend-api/SKILL.md
    targetPath: .claude/skills/backend-api/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables:
      - stack.backendApi
    enabledByDefault: true
    packs:
      - backend-api

  - id: postgres-pack-skill
    type: skill
    sourceTemplate: .claude/skills/postgres/SKILL.md
    targetPath: .claude/skills/postgres/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables:
      - stack.postgres
    enabledByDefault: true
    packs:
      - postgres

  - id: postgres-ref-fn-get
    type: skill
    sourceTemplate: .claude/skills/postgres/reference/fn_get_examples.sql
    targetPath: .claude/skills/postgres/reference/fn_get_examples.sql
    requires:
      - postgres-pack-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - postgres

  - id: postgres-ref-fn-rpt
    type: skill
    sourceTemplate: .claude/skills/postgres/reference/fn_rpt_examples.sql
    targetPath: .claude/skills/postgres/reference/fn_rpt_examples.sql
    requires:
      - postgres-pack-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - postgres

  - id: debugging-toolkit-skill
    type: skill
    sourceTemplate: .claude/skills/debugging-toolkit/SKILL.md
    targetPath: .claude/skills/debugging-toolkit/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: code-review-skill
    type: skill
    sourceTemplate: .claude/skills/code-review/SKILL.md
    targetPath: .claude/skills/code-review/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: repo-maintenance-skill
    type: skill
    sourceTemplate: .claude/skills/repo-maintenance/SKILL.md
    targetPath: .claude/skills/repo-maintenance/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: testing-quality-skill
    type: skill
    sourceTemplate: .claude/skills/testing-quality/SKILL.md
    targetPath: .claude/skills/testing-quality/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: pdf-processing-skill
    type: skill
    sourceTemplate: .claude/skills/pdf-processing/SKILL.md
    targetPath: .claude/skills/pdf-processing/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: canvas-design-skill
    type: skill
    sourceTemplate: .claude/skills/canvas-design
    targetPath: .claude/skills/canvas-design
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: discover-security-skill
    type: skill
    sourceTemplate: .claude/skills/discover-security/SKILL.md
    targetPath: .claude/skills/discover-security/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docs-quality-skill
    type: skill
    sourceTemplate: .claude/skills/docs-quality/SKILL.md
    targetPath: .claude/skills/docs-quality/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: next-step-skill
    type: skill
    sourceTemplate: .claude/skills/next-step/SKILL.md
    targetPath: .claude/skills/next-step/SKILL.md
    requires:
      - docs-quality-skill
      - docs-ai-handoff
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: update-status-skill
    type: skill
    sourceTemplate: .claude/skills/update-status/SKILL.md
    targetPath: .claude/skills/update-status/SKILL.md
    requires:
      - docs-quality-skill
      - docs-ai-handoff
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docs-manager-skill
    type: skill
    sourceTemplate: .claude/skills/docs-manager
    targetPath: .claude/skills/docs-manager
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: shared-ooxml-bundle
    type: skill
    sourceTemplate: .claude/skills/_shared/ooxml
    targetPath: .claude/skills/_shared/ooxml
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: docx-skill
    type: skill
    sourceTemplate: .claude/skills/docx
    targetPath: .claude/skills/docx
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: docx-ooxml-link
    type: link
    sourceTemplate: .claude/skills/_shared/ooxml
    targetPath: .claude/skills/docx/ooxml
    requires:
      - shared-ooxml-bundle
      - docx-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: executing-plans-skill
    type: skill
    sourceTemplate: .claude/skills/executing-plans/SKILL.md
    targetPath: .claude/skills/executing-plans/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: file-organizer-skill
    type: skill
    sourceTemplate: .claude/skills/file-organizer/SKILL.md
    targetPath: .claude/skills/file-organizer/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: frontend-design-skill
    type: skill
    sourceTemplate: .claude/skills/frontend-design/SKILL.md
    targetPath: .claude/skills/frontend-design/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: pdf-skill
    type: skill
    sourceTemplate: .claude/skills/pdf
    targetPath: .claude/skills/pdf
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: pdf-processing-pro-skill
    type: skill
    sourceTemplate: .claude/skills/pdf-processing-pro
    targetPath: .claude/skills/pdf-processing-pro
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: pptx-skill
    type: skill
    sourceTemplate: .claude/skills/pptx
    targetPath: .claude/skills/pptx
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: pptx-ooxml-link
    type: link
    sourceTemplate: .claude/skills/_shared/ooxml
    targetPath: .claude/skills/pptx/ooxml
    requires:
      - shared-ooxml-bundle
      - pptx-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: research-skill
    type: skill
    sourceTemplate: .claude/skills/research
    targetPath: .claude/skills/research
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: root-cause-tracing-skill
    type: skill
    sourceTemplate: .claude/skills/root-cause-tracing/SKILL.md
    targetPath: .claude/skills/root-cause-tracing/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: root-cause-tracing-find-polluter
    type: config
    sourceTemplate: .claude/skills/root-cause-tracing/find-polluter.sh
    targetPath: .claude/skills/root-cause-tracing/find-polluter.sh
    requires:
      - root-cause-tracing-skill
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: sharing-skills-skill
    type: skill
    sourceTemplate: .claude/skills/sharing-skills/SKILL.md
    targetPath: .claude/skills/sharing-skills/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: skill-quality-skill
    type: skill
    sourceTemplate: .claude/skills/skill-quality
    targetPath: .claude/skills/skill-quality
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: project-learning-skill
    type: skill
    sourceTemplate: .claude/skills/project-learning/SKILL.md
    targetPath: .claude/skills/project-learning/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: sql-optimization-patterns-skill
    type: skill
    sourceTemplate: .claude/skills/sql-optimization-patterns/SKILL.md
    targetPath: .claude/skills/sql-optimization-patterns/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: subagent-driven-development-skill
    type: skill
    sourceTemplate: .claude/skills/subagent-driven-development/SKILL.md
    targetPath: .claude/skills/subagent-driven-development/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: systematic-debugging-skill
    type: skill
    sourceTemplate: .claude/skills/systematic-debugging
    targetPath: .claude/skills/systematic-debugging
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: test-driven-development-skill
    type: skill
    sourceTemplate: .claude/skills/test-driven-development/SKILL.md
    targetPath: .claude/skills/test-driven-development/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: testing-anti-patterns-skill
    type: skill
    sourceTemplate: .claude/skills/testing-anti-patterns/SKILL.md
    targetPath: .claude/skills/testing-anti-patterns/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: false
    packs:
      - core

  - id: verification-before-completion-skill
    type: skill
    sourceTemplate: .claude/skills/verification-before-completion/SKILL.md
    targetPath: .claude/skills/verification-before-completion/SKILL.md
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: webapp-testing-skill
    type: skill
    sourceTemplate: .claude/skills/webapp-testing
    targetPath: .claude/skills/webapp-testing
    requires:
      - core-skill-delivery
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: agent-handoff-planner
    type: agent
    sourceTemplate: .claude/agents/handoff-planner.md
    targetPath: .claude/agents/handoff-planner.md
    requires:
      - docs-ai-handoff
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: agent-feature-implementer
    type: agent
    sourceTemplate: .claude/agents/feature-implementer.md
    targetPath: .claude/agents/feature-implementer.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - ukit.version
    enabledByDefault: true
    packs:
      - core

  - id: agent-bug-debugger
    type: agent
    sourceTemplate: .claude/agents/bug-debugger.md
    targetPath: .claude/agents/bug-debugger.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - ukit.version
    enabledByDefault: true
    packs:
      - core

  # The .omp/ mirror of this agent has always been installed; the .claude/ original was
  # shipped as a template with no manifest item, so autoDiscoverTemplates:false meant it
  # was silently never installed. Both handoff Phase 4 and the sidecar diff review need it.
  - id: agent-code-reviewer
    type: agent
    sourceTemplate: .claude/agents/code-reviewer.md
    targetPath: .claude/agents/code-reviewer.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: agent-ukit-small-task-maintainer
    type: agent
    sourceTemplate: .claude/agents/ukit-small-task-maintainer.md
    targetPath: .claude/agents/ukit-small-task-maintainer.md
    requires:
      - runtime-config
    mergeStrategy: overwrite_with_backup
    variables:
      - ukit.version
    enabledByDefault: true
    packs:
      - core

  - id: agent-ukit-vision-analyst
    type: agent
    sourceTemplate: .claude/agents/ukit-vision-analyst.md
    targetPath: .claude/agents/ukit-vision-analyst.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: command-handoff-create
    type: command
    sourceTemplate: .claude/commands/ukit/handoff-create.md
    targetPath: .claude/commands/ukit/handoff-create.md
    requires:
      - docs-ai-handoff
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: command-handoff-implement
    type: command
    sourceTemplate: .claude/commands/ukit/handoff-implement.md
    targetPath: .claude/commands/ukit/handoff-implement.md
    requires:
      - command-handoff-create
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: command-handoff-review
    type: command
    sourceTemplate: .claude/commands/ukit/handoff-review.md
    targetPath: .claude/commands/ukit/handoff-review.md
    requires:
      - command-handoff-create
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: command-handoff-clear
    type: command
    sourceTemplate: .claude/commands/ukit/handoff-clear.md
    targetPath: .claude/commands/ukit/handoff-clear.md
    requires:
      - command-handoff-create
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: command-handoff-status
    type: command
    sourceTemplate: .claude/commands/ukit/handoff-status.md
    targetPath: .claude/commands/ukit/handoff-status.md
    requires:
      - command-handoff-create
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: command-handoff-fullstack
    type: command
    sourceTemplate: .claude/commands/ukit/handoff-fullstack.md
    targetPath: .claude/commands/ukit/handoff-fullstack.md
    requires:
      - command-handoff-create
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: provider-compat-config
    type: config
    sourceTemplate: .claude/config/providers.md
    targetPath: .claude/config/providers.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - providers.unic
    enabledByDefault: true
    packs:
      - core

  - id: claude-settings-json
    type: config
    sourceTemplate: .claude/settings.json
    targetPath: .claude/settings.json
    requires:
      - hook-protect-files
      - hook-stale-spec-guard
      - hook-pre-edit-backup
      - hook-post-edit-verify
      - hook-auto-allow-bash
      - hook-block-dangerous
      - hook-handoff-model-guard
      - hook-auto-prune-bash
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: claude-settings-local
    type: config
    sourceTemplate: adapter-presets/claude/settings.local.json
    targetPath: .claude/settings.local.json
    requires: []
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-protect-files
    type: hook
    sourceTemplate: .claude/hooks/protect-files.sh
    targetPath: .claude/hooks/protect-files.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-stale-spec-guard
    type: hook
    sourceTemplate: .claude/hooks/stale-spec-guard.sh
    targetPath: .claude/hooks/stale-spec-guard.sh
    requires:
      - ukit-index-stale-spec-check-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-pre-edit-backup
    type: hook
    sourceTemplate: .claude/hooks/pre-edit-backup.sh
    targetPath: .claude/hooks/pre-edit-backup.sh
    requires:
      - ukit-index-pre-edit-backup-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-post-edit-verify
    type: hook
    sourceTemplate: .claude/hooks/post-edit-verify.sh
    targetPath: .claude/hooks/post-edit-verify.sh
    requires:
      - ukit-index-post-edit-verify-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-record-execution
    type: hook
    sourceTemplate: .claude/hooks/record-execution.sh
    targetPath: .claude/hooks/record-execution.sh
    requires:
      - ukit-runtime-execution-ledger-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-completion-gate
    type: hook
    sourceTemplate: .claude/hooks/completion-gate.sh
    targetPath: .claude/hooks/completion-gate.sh
    requires:
      - ukit-runtime-execution-ledger-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-auto-allow-bash
    type: hook
    sourceTemplate: .claude/hooks/auto-allow-bash.sh
    targetPath: .claude/hooks/auto-allow-bash.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-verification-guard
    type: hook
    sourceTemplate: .claude/hooks/verification-guard.sh
    targetPath: .claude/hooks/verification-guard.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-block-dangerous
    type: hook
    sourceTemplate: .claude/hooks/block-dangerous.sh
    targetPath: .claude/hooks/block-dangerous.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-sensitive-data-guard
    type: hook
    sourceTemplate: .claude/hooks/sensitive-data-guard.sh
    targetPath: .claude/hooks/sensitive-data-guard.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-handoff-model-guard
    type: hook
    sourceTemplate: .claude/hooks/handoff-model-guard.sh
    targetPath: .claude/hooks/handoff-model-guard.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-skill-router
    type: hook
    sourceTemplate: .claude/hooks/skill-router.sh
    targetPath: .claude/hooks/skill-router.sh
    requires:
      - ukit-index-route-catalog-script
      - ukit-runtime-compact-threshold-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-vision-router
    type: hook
    sourceTemplate: .claude/hooks/vision-router.sh
    targetPath: .claude/hooks/vision-router.sh
    requires:
      - ukit-index-extract-image-script
      - ukit-index-unic-gateway-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-context-hardcap-gate
    type: hook
    sourceTemplate: .claude/hooks/context-hardcap-gate.sh
    targetPath: .claude/hooks/context-hardcap-gate.sh
    requires:
      - ukit-runtime-compact-threshold-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-context-window-guard
    type: hook
    sourceTemplate: .claude/hooks/context-window-guard.sh
    targetPath: .claude/hooks/context-window-guard.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-handoff-resume
    type: hook
    sourceTemplate: .claude/hooks/handoff-resume.sh
    targetPath: .claude/hooks/handoff-resume.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-reset-compact-pressure
    type: hook
    sourceTemplate: .claude/hooks/reset-compact-pressure.sh
    targetPath: .claude/hooks/reset-compact-pressure.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-compress-output
    type: hook
    sourceTemplate: .claude/hooks/compress-output.sh
    targetPath: .claude/hooks/compress-output.sh
    requires:
      - ukit-runtime-output-compression-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-auto-prune-bash
    type: hook
    sourceTemplate: .claude/hooks/auto-prune-bash.sh
    targetPath: .claude/hooks/auto-prune-bash.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: hook-worklog-session-start
    type: hook
    sourceTemplate: .claude/hooks/session-start.md
    targetPath: .claude/hooks/session-start.md
    requires:
      - docs-worklog
    mergeStrategy: overwrite_with_backup
    variables:
      - project.name
    enabledByDefault: true
    packs:
      - core

  - id: hook-reinject-context
    type: hook
    sourceTemplate: .claude/hooks/reinject-context.sh
    targetPath: .claude/hooks/reinject-context.sh
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-text-profile-script
    type: config
    sourceTemplate: .claude/ukit/runtime/text-profile.mjs
    targetPath: .claude/ukit/runtime/text-profile.mjs
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-execution-ledger-script
    type: config
    sourceTemplate: .claude/ukit/runtime/execution-ledger.mjs
    targetPath: .claude/ukit/runtime/execution-ledger.mjs
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-hook-chain-runner-script
    type: config
    sourceTemplate: .claude/ukit/runtime/hook-chain-runner.mjs
    targetPath: .claude/ukit/runtime/hook-chain-runner.mjs
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-safe-patch-core-script
    type: config
    sourceTemplate: .claude/ukit/runtime/safe-patch-core.mjs
    targetPath: .claude/ukit/runtime/safe-patch-core.mjs
    requires:
      - ukit-runtime-text-profile-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-anchor-search-script
    type: config
    sourceTemplate: .claude/ukit/index/anchor-search.mjs
    targetPath: .claude/ukit/index/anchor-search.mjs
    requires:
      - ukit-runtime-text-profile-script
      - ukit-runtime-safe-patch-core-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-safe-patch-script
    type: config
    sourceTemplate: .claude/ukit/index/safe-patch.mjs
    targetPath: .claude/ukit/index/safe-patch.mjs
    requires:
      - ukit-index-anchor-search-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-provision-worktree-script
    type: config
    sourceTemplate: .claude/ukit/index/provision-worktree.mjs
    targetPath: .claude/ukit/index/provision-worktree.mjs
    requires:
      - ukit-runtime-text-profile-script
      - ukit-runtime-safe-patch-core-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-stale-spec-check-script
    type: config
    sourceTemplate: .claude/ukit/index/stale-spec-check.mjs
    targetPath: .claude/ukit/index/stale-spec-check.mjs
    requires:
      - ukit-runtime-text-profile-script
      - ukit-runtime-safe-patch-core-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-pre-edit-backup-script
    type: config
    sourceTemplate: .claude/ukit/index/pre-edit-backup.mjs
    targetPath: .claude/ukit/index/pre-edit-backup.mjs
    requires:
      - ukit-runtime-text-profile-script
      - ukit-runtime-safe-patch-core-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-post-edit-verify-script
    type: config
    sourceTemplate: .claude/ukit/index/post-edit-verify.mjs
    targetPath: .claude/ukit/index/post-edit-verify.mjs
    requires:
      - ukit-runtime-text-profile-script
      - ukit-runtime-safe-patch-core-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-core-lib
    type: config
    sourceTemplate: .claude/ukit/index/lib/index-core.mjs
    targetPath: .claude/ukit/index/lib/index-core.mjs
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-build-script
    type: config
    sourceTemplate: .claude/ukit/index/build-index.mjs
    targetPath: .claude/ukit/index/build-index.mjs
    requires:
      - ukit-index-core-lib
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-refresh-script
    type: config
    sourceTemplate: .claude/ukit/index/refresh-index.mjs
    targetPath: .claude/ukit/index/refresh-index.mjs
    requires:
      - ukit-index-core-lib
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-query-script
    type: config
    sourceTemplate: .claude/ukit/index/query-index.mjs
    targetPath: .claude/ukit/index/query-index.mjs
    requires:
      - ukit-index-core-lib
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-triage-script
    type: config
    sourceTemplate: .claude/ukit/index/triage.mjs
    targetPath: .claude/ukit/index/triage.mjs
    requires:
      - ukit-index-core-lib
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-resolve-context-script
    type: config
    sourceTemplate: .claude/ukit/index/resolve-context.mjs
    targetPath: .claude/ukit/index/resolve-context.mjs
    requires:
      - ukit-index-core-lib
      - ukit-index-cache-utils-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-verify-context-script
    type: config
    sourceTemplate: .claude/ukit/index/verify-context.mjs
    targetPath: .claude/ukit/index/verify-context.mjs
    requires:
      - ukit-index-core-lib
      - ukit-index-cache-utils-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-route-catalog-script
    type: config
    sourceTemplate: .claude/ukit/index/route-catalog.mjs
    targetPath: .claude/ukit/index/route-catalog.mjs
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-unic-gateway-script
    type: config
    sourceTemplate: .claude/ukit/index/unic-gateway.mjs
    targetPath: .claude/ukit/index/unic-gateway.mjs
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-extract-image-script
    type: config
    sourceTemplate: .claude/ukit/index/extract-image.mjs
    targetPath: .claude/ukit/index/extract-image.mjs
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-route-task-script
    type: config
    sourceTemplate: .claude/ukit/index/route-task.mjs
    targetPath: .claude/ukit/index/route-task.mjs
    requires:
      - ukit-index-core-lib
      - ukit-index-cache-utils-script
      - ukit-index-route-catalog-script
      - ukit-index-unic-gateway-script
      - ukit-index-extract-image-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-impact-context-script
    type: config
    sourceTemplate: .claude/ukit/index/impact-context.mjs
    targetPath: .claude/ukit/index/impact-context.mjs
    requires:
      - ukit-index-core-lib
      - ukit-index-cache-utils-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-cache-utils-script
    type: config
    sourceTemplate: .claude/ukit/index/cache-utils.mjs
    targetPath: .claude/ukit/index/cache-utils.mjs
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-token-utils-script
    type: config
    sourceTemplate: .claude/ukit/runtime/token-utils.mjs
    targetPath: .claude/ukit/runtime/token-utils.mjs
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-compact-threshold-script
    type: config
    sourceTemplate: .claude/ukit/runtime/compact-threshold.mjs
    targetPath: .claude/ukit/runtime/compact-threshold.mjs
    requires:
      - ukit-runtime-token-utils-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-reinject-context-script
    type: config
    sourceTemplate: .claude/ukit/runtime/reinject-context.mjs
    targetPath: .claude/ukit/runtime/reinject-context.mjs
    requires:
      - ukit-runtime-token-utils-script
      - ukit-runtime-compact-threshold-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-runtime-output-compression-script
    type: config
    sourceTemplate: .claude/ukit/runtime/output-compression.mjs
    targetPath: .claude/ukit/runtime/output-compression.mjs
    requires:
      - ukit-runtime-token-utils-script
      - ukit-runtime-compact-threshold-script
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: ukit-index-reset-auto-permissions-script
    type: config
    sourceTemplate: .claude/ukit/index/reset-auto-permissions.mjs
    targetPath: .claude/ukit/index/reset-auto-permissions.mjs
    requires:
      - ukit-index-core-lib
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: gitignore-root
    type: config
    sourceTemplate: .gitignore
    targetPath: .gitignore
    requires: []
    mergeStrategy: skip
    variables: []
    enabledByDefault: true
    packs:
      - core

  # ═══════════════════════════════════════════════════════════════
  # Multi-tool Adapters
  # Config files generated from templates.
  # ═══════════════════════════════════════════════════════════════

  # --- omp (Oh My Pi) ---
  # No `type: link` items on purpose (PLAN.md §3 D10): omp's `claude` discovery provider
  # already reads `.claude/skills` and `.claude/commands`, so a native-priority duplicate
  # under `.omp/` would buy nothing. `.omp/agents/` must be real files because omp skips
  # `.claude/agents/*.md` outright (TASK_AGENT_CONFIG_SOURCE = ".omp").
  # `autoDiscoverTemplates: false` means a template file without an item here is silently
  # never installed — every file under `templates/.omp/` needs exactly one entry below.

  - id: multi-omp-agents-md
    type: config
    sourceTemplate: .omp/AGENTS.md
    targetPath: .omp/AGENTS.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-rules
    type: config
    sourceTemplate: .omp/RULES.md
    targetPath: .omp/RULES.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-config
    type: config
    sourceTemplate: .omp/config.yml
    targetPath: .omp/config.yml
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-readme
    type: config
    sourceTemplate: .omp/README.md
    targetPath: .omp/README.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - project.name
      - project.stack
      - runtime.packageManager
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-hook-bridge
    type: config
    sourceTemplate: .omp/hooks/pre/ukit-bridge.js
    targetPath: .omp/hooks/pre/ukit-bridge.js
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-agent-bug-debugger
    type: config
    sourceTemplate: .omp/agents/bug-debugger.md
    targetPath: .omp/agents/bug-debugger.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-agent-code-reviewer
    type: config
    sourceTemplate: .omp/agents/code-reviewer.md
    targetPath: .omp/agents/code-reviewer.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-agent-feature-implementer
    type: config
    sourceTemplate: .omp/agents/feature-implementer.md
    targetPath: .omp/agents/feature-implementer.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-agent-handoff-planner
    type: config
    sourceTemplate: .omp/agents/handoff-planner.md
    targetPath: .omp/agents/handoff-planner.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-agent-ukit-small-task-maintainer
    type: config
    sourceTemplate: .omp/agents/ukit-small-task-maintainer.md
    targetPath: .omp/agents/ukit-small-task-maintainer.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-omp-agent-ukit-vision-analyst
    type: config
    sourceTemplate: .omp/agents/ukit-vision-analyst.md
    targetPath: .omp/agents/ukit-vision-analyst.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables: []
    enabledByDefault: true
    packs:
      - core

  # --- OpenAI Codex ---

  - id: multi-codex-skills-link
    type: link
    sourceTemplate: .claude/skills
    targetPath: .codex/skills
    requires: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-codex-ukit-link
    type: link
    sourceTemplate: .claude/ukit
    targetPath: .codex/ukit
    requires: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-codex-agents-link
    type: link
    sourceTemplate: .claude/agents
    targetPath: .codex/agents
    requires: []
    enabledByDefault: true
    packs:
      - core

  - id: multi-codex-readme
    type: config
    sourceTemplate: .codex/README.md
    targetPath: .codex/README.md
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - project.name
      - project.stack
      - runtime.packageManager
    enabledByDefault: true
    packs:
      - core

  - id: multi-codex-settings-json
    type: config
    sourceTemplate: .codex/settings.json
    targetPath: .codex/settings.json
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - runtime.packageManager
    enabledByDefault: true
    packs:
      - core

  - id: multi-codex-settings-local
    type: config
    sourceTemplate: adapter-presets/codex/settings.local.json
    targetPath: .codex/settings.local.json
    requires: []
    mergeStrategy: skip
    variables:
      - runtime.packageManager
    enabledByDefault: true
    packs:
      - core

  # --- OpenCode ---

  - id: multi-opencode-config
    type: config
    sourceTemplate: adapter-presets/opencode/opencode.template.json
    targetPath: opencode.json
    requires: []
    mergeStrategy: overwrite_with_backup
    variables:
      - project.name
      - runtime.packageManager
    enabledByDefault: true
    packs:
      - core
