docs-v2/scripts/schemas/scaffold-context.schema.json

183 lines
5.5 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Content Scaffolding Context",
"description": "Context data prepared by docs-create.js for AI analysis",
"type": "object",
"required": ["draft", "products", "productHints", "versionInfo", "structure", "conventions"],
"properties": {
"mode": {
"type": "string",
"enum": ["create", "edit"],
"description": "Operation mode: create new content or edit existing content"
},
"urls": {
"type": "array",
"description": "URL analysis results (for URL-based workflow)",
"items": {
"type": "object",
"properties": {
"url": { "type": "string" },
"parsed": {
"type": "object",
"properties": {
"namespace": { "type": "string" },
"product": { "type": "string" },
"section": { "type": "string" },
"pagePath": { "type": "string" },
"isSection": { "type": "boolean" }
}
},
"exists": { "type": "boolean" },
"files": {
"type": "object",
"properties": {
"main": { "type": "string" },
"isShared": { "type": "boolean" },
"sharedSource": { "type": ["string", "null"] },
"variants": {
"type": "array",
"items": { "type": "string" }
}
}
}
}
}
},
"existingContent": {
"type": "object",
"description": "Existing file contents (for edit mode)",
"patternProperties": {
".*": { "type": "string" }
}
},
"draft": {
"type": "object",
"description": "Draft content and metadata",
"required": ["path", "content", "existingFrontmatter"],
"properties": {
"path": {
"type": "string",
"description": "Path to the draft file"
},
"content": {
"type": "string",
"description": "Markdown content of the draft"
},
"existingFrontmatter": {
"type": "object",
"description": "Frontmatter from draft (if any)"
}
}
},
"products": {
"type": "object",
"description": "Available InfluxDB products from data/products.yml",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"key": { "type": "string" },
"name": { "type": "string" },
"namespace": { "type": "string" },
"menu_category": { "type": "string" },
"versions": { "type": "array", "items": { "type": "string" } },
"latest": { "type": "string" }
}
}
}
},
"productHints": {
"type": "object",
"description": "Product recommendations from content analysis",
"required": ["mentioned", "suggested"],
"properties": {
"mentioned": {
"type": "array",
"description": "Products explicitly mentioned in draft content",
"items": { "type": "string" }
},
"suggested": {
"type": "array",
"description": "Products suggested based on analysis",
"items": { "type": "string" }
}
}
},
"versionInfo": {
"type": "object",
"description": "Detected InfluxDB version and tools",
"required": ["version", "tools", "apis"],
"properties": {
"version": {
"type": ["string", "null"],
"description": "Detected version (3.x, 2.x, 1.x, or null)"
},
"tools": {
"type": "array",
"description": "CLI tools and utilities mentioned",
"items": { "type": "string" }
},
"apis": {
"type": "array",
"description": "API endpoints mentioned",
"items": { "type": "string" }
}
}
},
"structure": {
"type": "object",
"description": "Repository structure analysis",
"required": ["sections", "existingPaths", "siblingWeights"],
"properties": {
"sections": {
"type": "array",
"description": "Available documentation sections",
"items": { "type": "string" }
},
"existingPaths": {
"type": "array",
"description": "All existing directory paths",
"items": { "type": "string" }
},
"siblingWeights": {
"type": "object",
"description": "Weight values from sibling pages by section",
"patternProperties": {
".*": {
"type": "array",
"items": { "type": "number" }
}
}
}
}
},
"conventions": {
"type": "object",
"description": "Documentation conventions and guidelines",
"required": ["sharedContentDir", "menuKeyPattern", "weightLevels", "namingRules", "testing"],
"properties": {
"sharedContentDir": {
"type": "string",
"description": "Directory for shared content"
},
"menuKeyPattern": {
"type": "string",
"description": "Pattern for menu keys"
},
"weightLevels": {
"type": "object",
"description": "Weight ranges by navigation level"
},
"namingRules": {
"type": "object",
"description": "File and directory naming conventions"
},
"testing": {
"type": "object",
"description": "Testing conventions for code samples"
}
}
}
}
}