Skip to content

refactor(aidd-context): rework project-memory skill with capability model #512

refactor(aidd-context): rework project-memory skill with capability model

refactor(aidd-context): rework project-memory skill with capability model #512

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
permissions:
contents: write
pull-requests: write
jobs:
commitlint:
name: Commitlint
runs-on: ubuntu-latest
if: "!startsWith(github.head_ref, 'release-please--')"
permissions:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1
with:
configFile: commitlint.config.cjs
commitDepth: 1
release-please:
name: Release Please
runs-on: ubuntu-latest
needs: [commitlint]
if: |
always() &&
github.event_name == 'push' &&
(needs.commitlint.result == 'success' || needs.commitlint.result == 'skipped')
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
version: ${{ steps.release.outputs.version }}
paths_released: ${{ steps.release.outputs.paths_released }}
aidd_context_release_created: ${{ steps.release.outputs['plugins/aidd-context--release_created'] }}
aidd_context_version: ${{ steps.release.outputs['plugins/aidd-context--version'] }}
aidd_context_tag_name: ${{ steps.release.outputs['plugins/aidd-context--tag_name'] }}
aidd_dev_release_created: ${{ steps.release.outputs['plugins/aidd-dev--release_created'] }}
aidd_dev_version: ${{ steps.release.outputs['plugins/aidd-dev--version'] }}
aidd_dev_tag_name: ${{ steps.release.outputs['plugins/aidd-dev--tag_name'] }}
aidd_vcs_release_created: ${{ steps.release.outputs['plugins/aidd-vcs--release_created'] }}
aidd_vcs_version: ${{ steps.release.outputs['plugins/aidd-vcs--version'] }}
aidd_vcs_tag_name: ${{ steps.release.outputs['plugins/aidd-vcs--tag_name'] }}
aidd_pm_release_created: ${{ steps.release.outputs['plugins/aidd-pm--release_created'] }}
aidd_pm_version: ${{ steps.release.outputs['plugins/aidd-pm--version'] }}
aidd_pm_tag_name: ${{ steps.release.outputs['plugins/aidd-pm--tag_name'] }}
aidd_orchestrator_release_created: ${{ steps.release.outputs['plugins/aidd-orchestrator--release_created'] }}
aidd_orchestrator_version: ${{ steps.release.outputs['plugins/aidd-orchestrator--version'] }}
aidd_orchestrator_tag_name: ${{ steps.release.outputs['plugins/aidd-orchestrator--tag_name'] }}
aidd_refine_release_created: ${{ steps.release.outputs['plugins/aidd-refine--release_created'] }}
aidd_refine_version: ${{ steps.release.outputs['plugins/aidd-refine--version'] }}
aidd_refine_tag_name: ${{ steps.release.outputs['plugins/aidd-refine--tag_name'] }}
steps:
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
id: app-token
with:
app-id: ${{ secrets.AIDD_BOT_APP_ID }}
private-key: ${{ secrets.AIDD_BOT_PRIVATE_KEY }}
- uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0
id: release
with:
token: ${{ steps.app-token.outputs.token }}
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
build-and-attach:
name: Build and attach marketplace
needs: [release-please]
if: needs.release-please.outputs.release_created == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Build clean marketplace bundle
# A self-contained marketplace a user can extract and register with
# `/plugin marketplace add ./aidd-framework-marketplace-<version>`.
# Contains only what the marketplace needs: the catalog manifest and
# the plugins. No framework-internal files (aidd_docs/, scripts/, etc.).
run: |
VERSION="${{ needs.release-please.outputs.version }}"
STAGE_PARENT="$(mktemp -d)"
STAGE="${STAGE_PARENT}/aidd-framework-marketplace-${VERSION}"
mkdir -p "${STAGE}"
cp -R .claude-plugin "${STAGE}/"
cp -R plugins "${STAGE}/"
( cd "${STAGE_PARENT}" && zip -q -r "/tmp/aidd-framework-marketplace-${VERSION}.zip" "aidd-framework-marketplace-${VERSION}" )
- name: Attach marketplace bundle to release
env:
GH_TOKEN: ${{ github.token }}
run: |
VERSION="${{ needs.release-please.outputs.version }}"
TAG="${{ needs.release-please.outputs.tag_name }}"
gh release upload "${TAG}" \
"/tmp/aidd-framework-marketplace-${VERSION}.zip" \
--clobber
build-per-tool:
name: Build and attach per-tool distribution
needs: [release-please]
if: needs.release-please.outputs.release_created == 'true'
runs-on: ubuntu-latest
strategy:
fail-fast: false
# 9-cell matrix: 4 marketplace (claude/cursor/copilot/codex) + 5 flat
# (+opencode, which is flat-only). Mirrors the CLI golden snapshot matrix.
matrix:
include:
- { tool: claude, mode: marketplace, flag: "" }
- { tool: cursor, mode: marketplace, flag: "" }
- { tool: copilot, mode: marketplace, flag: "" }
- { tool: codex, mode: marketplace, flag: "" }
- { tool: claude, mode: flat, flag: "--flat" }
- { tool: cursor, mode: flat, flag: "--flat" }
- { tool: copilot, mode: flat, flag: "--flat" }
- { tool: codex, mode: flat, flag: "--flat" }
- { tool: opencode, mode: flat, flag: "--flat" }
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "22"
- name: Build the target-native distribution
# Pin the CLI version: a future CLI release must not silently change
# framework dist output. Bump deliberately alongside a framework change.
run: |
VERSION="${{ needs.release-please.outputs.version }}"
NAME="aidd-framework-${{ matrix.tool }}-${{ matrix.mode }}-${VERSION}"
# --out must live outside --source: the CLI refuses to build when one
# path contains the other. Stage under RUNNER_TEMP, not the repo tree.
OUT="${RUNNER_TEMP}/dist/${{ matrix.tool }}/${{ matrix.mode }}"
mkdir -p "$OUT"
npx --yes @ai-driven-dev/cli@4.6.1 framework build \
--source . --target ${{ matrix.tool }} --out "$OUT" ${{ matrix.flag }}
STAGE="$(mktemp -d)/${NAME}"
mkdir -p "$STAGE"
cp -R "$OUT"/. "$STAGE"/
( cd "$(dirname "$STAGE")" && zip -q -r "/tmp/${NAME}.zip" "${NAME}" )
- name: Attach per-tool distribution to release
env:
GH_TOKEN: ${{ github.token }}
run: |
VERSION="${{ needs.release-please.outputs.version }}"
TAG="${{ needs.release-please.outputs.tag_name }}"
NAME="aidd-framework-${{ matrix.tool }}-${{ matrix.mode }}-${VERSION}"
gh release upload "${TAG}" "/tmp/${NAME}.zip" --clobber
build-plugin:
name: Build and attach plugin
needs: [release-please]
if: needs.release-please.outputs.paths_released != '' && needs.release-please.outputs.paths_released != '[]'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
plugin: [aidd-context, aidd-dev, aidd-vcs, aidd-pm, aidd-orchestrator, aidd-refine]
steps:
- name: Check if this plugin was released
id: check
run: |
PATHS='${{ needs.release-please.outputs.paths_released }}'
if echo "$PATHS" | jq -e --arg p "plugins/${{ matrix.plugin }}" 'map(. == $p) | any' > /dev/null 2>&1; then
echo "released=true" >> $GITHUB_OUTPUT
else
echo "released=false" >> $GITHUB_OUTPUT
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
if: steps.check.outputs.released == 'true'
- name: Get plugin version
id: version
if: steps.check.outputs.released == 'true'
run: |
VERSION=$(jq -r '.version' "plugins/${{ matrix.plugin }}/.claude-plugin/plugin.json")
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Build plugin bundle
if: steps.check.outputs.released == 'true'
# Clean, self-contained plugin directory. A user extracts it and
# installs the plugin locally. No framework-internal files.
run: |
PLUGIN="${{ matrix.plugin }}"
VERSION="${{ steps.version.outputs.version }}"
( cd plugins && zip -q -r "/tmp/${PLUGIN}-v${VERSION}.zip" "${PLUGIN}" )
- name: Attach plugin bundle to release
if: steps.check.outputs.released == 'true'
env:
GH_TOKEN: ${{ github.token }}
run: |
PLUGIN="${{ matrix.plugin }}"
VERSION="${{ steps.version.outputs.version }}"
TAG="${PLUGIN}-v${VERSION}"
gh release upload "${TAG}" \
"/tmp/${PLUGIN}-v${VERSION}.zip" \
--clobber