Files
dss/packages/dss-rules/schemas/ds.config.schema.json
DSS 9dbd56271e
Some checks failed
DSS Project Analysis / dss-context-update (push) Has been cancelled
feat: Enterprise DSS architecture implementation
Complete implementation of enterprise design system validation:

Phase 1 - @dss/rules npm package:
- CLI with validate and init commands
- 16 rules across 5 categories (colors, spacing, typography, components, a11y)
- dss-ignore support (inline and next-line)
- Break-glass [dss-skip] for emergency merges
- CI workflow templates (Gitea, GitHub, GitLab)

Phase 2 - Metrics dashboard:
- FastAPI metrics API with SQLite storage
- Portfolio-wide metrics aggregation
- Project drill-down with file:line:column violations
- Trend charts and history tracking

Phase 3 - Local analysis cache:
- LocalAnalysisCache for offline-capable validation
- Mode detection (LOCAL/REMOTE/CI)
- Stale cache warnings with recommendations

Phase 4 - Project onboarding:
- dss-init command for project setup
- Creates ds.config.json, .dss/ folder structure
- Updates .gitignore and package.json scripts
- Optional CI workflow setup

Architecture decisions:
- No commit-back: CI uploads to dashboard, not git
- Three-tier: Dashboard (read-only) → CI (authoritative) → Local (advisory)
- Pull-based rules via npm for version control

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 09:41:36 -03:00

119 lines
3.0 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://dss.overbits.luz.uy/schemas/ds.config.schema.json",
"title": "DSS Project Configuration",
"description": "Configuration schema for DSS-enabled projects",
"type": "object",
"required": ["name", "rules"],
"properties": {
"$schema": {
"type": "string"
},
"name": {
"type": "string",
"description": "Project name"
},
"version": {
"type": "string",
"description": "Project version"
},
"rules": {
"type": "object",
"required": ["package"],
"properties": {
"package": {
"type": "string",
"description": "Rules package name (e.g., @dss/rules)"
},
"version": {
"type": "string",
"description": "Semver version constraint"
},
"overrides": {
"type": "object",
"description": "Rule-specific overrides",
"additionalProperties": {
"type": "object",
"properties": {
"severity": {
"enum": ["error", "warning", "info", "off"]
},
"enabled": {
"type": "boolean"
}
}
}
}
}
},
"analysis": {
"type": "object",
"properties": {
"include": {
"type": "array",
"items": { "type": "string" },
"description": "Glob patterns for files to analyze"
},
"exclude": {
"type": "array",
"items": { "type": "string" },
"description": "Glob patterns for files to exclude"
},
"output": {
"type": "string",
"description": "Output path for analysis graph"
}
}
},
"metrics": {
"type": "object",
"properties": {
"upload": {
"type": "boolean",
"description": "Whether to upload metrics to dashboard"
},
"dashboardUrl": {
"type": "string",
"format": "uri",
"description": "Dashboard API endpoint"
},
"projectId": {
"type": "string",
"description": "Project identifier in dashboard"
}
}
},
"ci": {
"type": "object",
"properties": {
"blocking": {
"type": "boolean",
"description": "Whether errors block the pipeline"
},
"skipPattern": {
"type": "string",
"description": "Pattern in commit message to skip validation"
},
"baselineBranch": {
"type": "string",
"description": "Branch to compare against for new violations"
}
}
},
"tokens": {
"type": "object",
"description": "Token configuration",
"properties": {
"source": {
"type": "string",
"description": "Path to token definitions"
},
"format": {
"enum": ["css", "scss", "json", "js"],
"description": "Token file format"
}
}
}
}
}