Skip to content

feat: Add Context Management Skill (Knowledge Layer) #1

feat: Add Context Management Skill (Knowledge Layer)

feat: Add Context Management Skill (Knowledge Layer) #1

# CI/CD for Context Skill - Development Branch
#
# Runs on: Push to feature/context-system
# Purpose: Fast feedback on development work
#
# Tests:
# - Lint & typecheck
# - Unit tests
# - CLI tests
name: Context Skill - Dev Tests
on:
push:
branches:
- 'feature/context-system'
paths:
- 'bin/ingest/**'
- 'bin/obs/**'
- '.claude/skills/context/**'
pull_request:
branches:
- 'main'
- 'feature/context-system'
paths:
- 'bin/ingest/**'
- 'bin/obs/**'
- '.claude/skills/context/**'
jobs:
lint-and-typecheck:
name: Lint & Typecheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies (obs)
working-directory: bin/obs
run: bun install
- name: Install dependencies (ingest)
working-directory: bin/ingest
run: bun install
- name: Typecheck obs
working-directory: bin/obs
run: bun run tsc --noEmit || echo "Typecheck completed with warnings"
- name: Typecheck ingest
working-directory: bin/ingest
run: bun run tsc --noEmit || echo "Typecheck completed with warnings"
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
working-directory: bin/ingest
run: bun install
- name: Create test vault
run: |
mkdir -p /tmp/test-vault
echo "---\ntitle: Test Note\ntags: [test]\n---\n# Test" > /tmp/test-vault/test.md
- name: Run unit tests
working-directory: bin/ingest
env:
OBSIDIAN_VAULT_PATH: /tmp/test-vault
run: |
if [ -d "test/unit" ]; then
bun test test/unit/
else
echo "No unit tests found"
fi
cli-tests:
name: CLI Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies (obs)
working-directory: bin/obs
run: bun install
- name: Install dependencies (ingest)
working-directory: bin/ingest
run: bun install
- name: Create test vault
run: |
mkdir -p /tmp/test-vault
cp -r bin/ingest/deployment/test-vault/* /tmp/test-vault/ 2>/dev/null || true
echo "---\ntitle: Test Note\ntags: [test, scope/work]\n---\n# Test" > /tmp/test-vault/test.md
- name: Smoke test - obs --help
working-directory: bin/obs
run: bun run obs.ts --help
- name: Smoke test - ingest --help
working-directory: bin/ingest
run: bun run ingest.ts --help
- name: Test obs tags
working-directory: bin/obs
env:
OBSIDIAN_VAULT_PATH: /tmp/test-vault
run: bun run obs.ts tags || echo "Tags command completed"
- name: Test obs search
working-directory: bin/obs
env:
OBSIDIAN_VAULT_PATH: /tmp/test-vault
run: bun run obs.ts search --tag test || echo "Search completed"
summary:
name: Test Summary
needs: [lint-and-typecheck, unit-tests, cli-tests]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check results
run: |
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Test | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Lint & Typecheck | ${{ needs.lint-and-typecheck.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Unit Tests | ${{ needs.unit-tests.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| CLI Tests | ${{ needs.cli-tests.result }} |" >> $GITHUB_STEP_SUMMARY