feat: add documentation website with Docusaurus build pipeline (#1177)

* feat: add documentation website with Docusaurus build pipeline

* feat(docs): add AI discovery meta tags for llms.txt files

- Add global headTags with ai-terms, llms, llms-full meta tags
- Update landing page link to clarify AI context purpose

* fix(docs): restore accidentally deleted faq.md and glossary.md

Files were removed in 12dd97fe during path restructuring.

* fix(docs): update broken project-readme links to GitHub URL

* feat(schema): add compound trigger format validation
This commit is contained in:
Alex Verkhovsky
2025-12-23 07:01:36 -08:00
committed by GitHub
parent 925b715d4f
commit 19df17b261
163 changed files with 20878 additions and 1509 deletions

View File

@@ -0,0 +1,24 @@
# Test: CamelCase trigger
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger must be kebab-case (lowercase words separated by hyphen)
agent:
metadata:
id: camel-case-trigger
name: CamelCase Trigger
title: CamelCase
icon:
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: listTasks
description: Invalid CamelCase trigger
action: list_tasks

View File

@@ -0,0 +1,24 @@
# Test: Compound trigger with invalid format
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger compound format error: invalid compound trigger format
agent:
metadata:
id: compound-invalid-format
name: Invalid Format
title: Invalid Format Test
icon: 🧪
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: TS or tech-spec
description: Missing fuzzy match clause
action: test

View File

@@ -0,0 +1,24 @@
# Test: Compound trigger with mismatched kebab portions
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger compound format error: kebab-case trigger mismatch: "tech-spec" vs "other-thing"
agent:
metadata:
id: compound-mismatched-kebab
name: Mismatched Kebab
title: Mismatched Kebab Test
icon: 🧪
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: TS or tech-spec or fuzzy match on other-thing
description: Kebab portions do not match
action: test

View File

@@ -0,0 +1,24 @@
# Test: Compound trigger with wrong shortcut
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger compound format error: shortcut "XX" does not match expected "TS" for "tech-spec"
agent:
metadata:
id: compound-wrong-shortcut
name: Wrong Shortcut
title: Wrong Shortcut Test
icon: 🧪
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: XX or tech-spec or fuzzy match on tech-spec
description: Shortcut does not match kebab trigger
action: test

View File

@@ -0,0 +1,24 @@
# Test: Trigger with leading asterisk
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger must be kebab-case (lowercase words separated by hyphen)
agent:
metadata:
id: asterisk-trigger
name: Asterisk Trigger
title: Asterisk
icon:
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: "*help"
description: Invalid trigger with asterisk
action: display_help

View File

@@ -0,0 +1,24 @@
# Test: Snake_case trigger
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger must be kebab-case (lowercase words separated by hyphen)
agent:
metadata:
id: snake-case-trigger
name: Snake Case Trigger
title: Snake Case
icon:
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: list_tasks
description: Invalid snake_case trigger
action: list_tasks

View File

@@ -0,0 +1,24 @@
# Test: Trigger with spaces
# Expected: FAIL
# Error code: custom
# Error path: agent.menu[0].trigger
# Error message: agent.menu[].trigger must be kebab-case (lowercase words separated by hyphen)
agent:
metadata:
id: spaces-trigger
name: Spaces Trigger
title: Spaces
icon:
persona:
role: Test agent
identity: Test identity
communication_style: Test style
principles:
- Test principle
menu:
- trigger: list tasks
description: Invalid trigger with spaces
action: list_tasks

View File

@@ -0,0 +1,30 @@
# Test: Valid compound triggers
# Expected: PASS
agent:
metadata:
id: compound-triggers
name: Compound Triggers
title: Compound Triggers Test
icon: 🧪
persona:
role: Test agent with compound triggers
identity: I test compound trigger validation.
communication_style: Clear
principles:
- Test compound format
menu:
- trigger: TS or tech-spec or fuzzy match on tech-spec
description: Two-word compound trigger
action: tech_spec
- trigger: DS or dev-story or fuzzy match on dev-story
description: Another two-word compound trigger
action: dev_story
- trigger: WI or workflow-init-process or fuzzy match on workflow-init-process
description: Three-word compound trigger (uses first 2 words for shortcut)
action: workflow_init
- trigger: H or help or fuzzy match on help
description: Single-word compound trigger (1-letter shortcut)
action: help

View File

@@ -13,7 +13,7 @@
const path = require('node:path');
const fs = require('fs-extra');
const { YamlXmlBuilder } = require('../tools/cli/lib/agent/yaml-xml-builder');
const { YamlXmlBuilder } = require('../tools/cli/lib/yaml-xml-builder');
const { ManifestGenerator } = require('../tools/cli/installers/lib/core/manifest-generator');
// ANSI colors
@@ -175,7 +175,7 @@ async function runTests() {
assert(compiled.includes('testarch/knowledge'), 'TEA agent compilation includes knowledge base path');
assert(compiled.includes('test-design'), 'TEA agent menu includes test-design workflow');
assert(compiled.includes('*test-design'), 'TEA agent menu includes test-design workflow');
// Cleanup
await fs.remove(tempOutput);