--- name: artifact-metadata description: Manage artifact metadata, versioning, ownership, and history tracking. Use when relevant to the task. --- # artifact-metadata Manage artifact metadata, versioning, ownership, and history tracking. ## Triggers - "update artifact metadata" - "track artifact version" - "artifact history" - "who owns [artifact]" - "artifact status" - "version [artifact]" ## Purpose This skill provides consistent metadata management for all SDLC and marketing artifacts. It tracks ownership, versioning, review history, and status across the artifact lifecycle. ## Behavior When triggered, this skill: 1. **Locates or creates metadata**: - Check for existing `metadata.json` alongside artifact - Create new metadata if none exists - Validate against metadata schema 2. **Updates metadata fields**: - Version (semantic versioning) - Status (draft, review, baselined, deprecated) - Owner (agent or user) - Reviewers (list of reviewing agents) - Timestamps (created, modified, baselined) 3. **Tracks history**: - Version history with change summaries - Review records with reviewer and outcome - Approval records 4. **Validates relationships**: - Parent/child artifact links - Requirement traceability links - Cross-references to related artifacts ## Metadata Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": ["artifact_id", "name", "type", "version", "status", "owner"], "properties": { "artifact_id": { "type": "string", "description": "Unique identifier (e.g., SAD-001, UC-003)" }, "name": { "type": "string", "description": "Human-readable artifact name" }, "type": { "type": "string", "enum": ["requirements", "architecture", "test", "security", "deployment", "marketing", "report"] }, "version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$", "description": "Semantic version" }, "status": { "type": "string", "enum": ["draft", "review", "approved", "baselined", "deprecated"] }, "owner": { "type": "string", "description": "Primary owner (agent name or user)" }, "created": { "type": "string", "format": "date-time" }, "modified": { "type": "string", "format": "date-time" }, "baselined": { "type": "string", "format": "date-time" }, "reviewers": { "type": "array", "items": {"type": "string"} }, "history": { "type": "array", "items": { "type": "object", "properties": { "version": {"type": "string"}, "date": {"type": "string", "format": "date-time"}, "author": {"type": "string"}, "summary": {"type": "string"} } } }, "reviews": { "type": "array", "items": { "type": "object", "properties": { "reviewer": {"type": "string"}, "date": {"type": "string", "format": "date-time"}, "outcome": {"type": "string", "enum": ["approved", "conditional", "rejected"]}, "comments": {"type": "string"} } } }, "traceability": { "type": "object", "properties": { "requirements": {"type": "array", "items": {"type": "string"}}, "parent": {"type": "string"}, "children": {"type": "array", "items": {"type": "string"}} } }, "tags": { "type": "array", "items": {"type": "string"} } } } ``` ## Usage Examples ### Create New Metadata ``` User: "Create metadata for the SAD" Skill creates: .aiwg/architecture/sad/metadata.json { "artifact_id": "SAD-001", "name": "Software Architecture Document", "type": "architecture", "version": "0.1.0", "status": "draft", "owner": "architecture-designer", "created": "2025-12-08T14:30:00Z", "modified": "2025-12-08T14:30:00Z", "reviewers": [], "history": [], "reviews": [] } ``` ### Update Version After Changes ``` User: "Version the SAD to 1.0.0 with summary 'Initial baseline'" Skill updates: - version: "1.0.0" - status: "baselined" - baselined: "2025-12-08T16:45:00Z" - history: [adds entry with version, date, summary] ``` ### Record Review ``` User: "Record security-architect review as approved" Skill updates: - reviews: [adds review record] - reviewers: [adds "security-architect" if not present] - modified: [updates timestamp] ``` ### Query Ownership ``` User: "Who owns the test plan?" Skill responds: "Test Plan (TP-001) is owned by test-architect. Status: review Version: 0.3.0 Last modified: 2025-12-07 Reviewers: security-auditor, requirements-analyst" ``` ## Status Lifecycle ``` draft → review → approved → baselined ↑ ↓ └── rejected (returns to draft) baselined → deprecated (end of life) ``` ### Status Transitions | From | To | Triggered By | |------|-----|-------------| | draft | review | Submit for review | | review | approved | All reviewers approve | | review | draft | Any reviewer rejects | | approved | baselined | Formal baseline action | | baselined | deprecated | Superseded or retired | ## Version Conventions - **0.x.x**: Draft versions (not baselined) - **1.0.0**: First baseline - **x.y.0**: Minor changes (compatible) - **x.0.0**: Major changes (may break traceability) ### Auto-Version Rules | Change Type | Version Bump | |-------------|-------------| | Typo fix | patch (0.0.x) | | Section update | minor (0.x.0) | | Structure change | major (x.0.0) | | Initial baseline | 1.0.0 | ## Artifact Type Conventions | Type | ID Prefix | Location | |------|-----------|----------| | requirements | UC-, REQ-, NFR- | .aiwg/requirements/ | | architecture | SAD-, ADR-, API- | .aiwg/architecture/ | | test | TP-, TC-, TS- | .aiwg/testing/ | | security | TM-, SEC- | .aiwg/security/ | | deployment | DP-, RN- | .aiwg/deployment/ | | marketing | CB-, CA- | .aiwg/marketing/ | | report | RPT- | .aiwg/reports/ | ## CLI Usage ```bash # Create metadata for artifact python artifact_metadata.py --create --artifact ".aiwg/architecture/sad.md" --type architecture # Update version python artifact_metadata.py --version "1.0.0" --artifact ".aiwg/architecture/sad.md" --summary "Initial baseline" # Record review python artifact_metadata.py --review --artifact ".aiwg/architecture/sad.md" \ --reviewer "security-architect" --outcome "approved" --comments "LGTM" # Query metadata python artifact_metadata.py --query --artifact ".aiwg/architecture/sad.md" # List all artifacts by status python artifact_metadata.py --list --status "review" # Validate all metadata python artifact_metadata.py --validate-all ``` ## Integration This skill integrates with: - `artifact-orchestration`: Sets initial metadata when creating artifacts - `gate-evaluation`: Checks artifact status for gate criteria - `traceability-check`: Uses traceability links in metadata - `template-engine`: Copies metadata template on instantiation ## Output Locations - Metadata file: `{artifact-dir}/metadata.json` - Alternatively: `{artifact-dir}/{artifact-name}.metadata.json` - Index file: `.aiwg/reports/artifact-index.json` ## References - Schema: `schemas/artifact-metadata.schema.json` - Conventions: AIWG Artifact Naming Guide