google-agents-cli-scaffold
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
doc-ears
Create EARS (Easy Approach to Requirements Syntax) formal requirements - Layer 3 artifact using WHEN-THE-SHALL-WITHIN format
Full skill instructions
Create EARS (Easy Approach to Requirements Syntax) documents - Layer 3 artifact in the SDD workflow that formalizes requirements using the WHEN-THE-SHALL-WITHIN syntax.
Layer: 3
Upstream: BRD (Layer 1), PRD (Layer 2)
Downstream Artifacts: BDD (Layer 4), ADR (Layer 5), SYS (Layer 6)
Before creating this document, you MUST:
List existing upstream artifacts:
ls docs/BRD/ docs/PRD/ docs/EARS/ 2>/dev/null
Reference only existing documents in traceability tags
Use null only when upstream artifact type genuinely doesn't exist
NEVER use placeholders like BRD-XXX or TBD
Do NOT create missing upstream artifacts - skip functionality instead
Before creating EARS, read:
.claude/skills/doc-flow/SHARED_CONTENT.mdai_dev_flow/EARS/EARS-TEMPLATE.md (Template Version 3.0, primary authority)ai_dev_flow/EARS/EARS_SCHEMA.yaml (machine-readable validation rules)ai_dev_flow/EARS/EARS_CREATION_RULES.mdai_dev_flow/EARS/EARS_VALIDATION_RULES.mdAlways use these exact metadata values:
tags:
- ears # NOT 'ears-requirements' or 'ears-formal-requirements'
- layer-3-artifact
- shared-architecture # OR 'ai-agent-primary' for agent docs
custom_fields:
document_type: ears # NOT 'engineering-requirements'
artifact_type: EARS
layer: 3
architecture_approaches: [ai-agent-based, traditional-8layer] # ARRAY format required
priority: shared
development_status: active
Use doc-ears when:
Per EARS-TEMPLATE.md, EARS documents require these sections:
| Section | Content |
|---|---|
| Document Control | Status, Version, Date, BDD-Ready Score, Source Document |
| 1. Purpose and Context | Document Purpose, Scope, Intended Audience |
| 2. EARS in Development Workflow | Layer positioning diagram |
| 3. Requirements | Event-Driven, State-Driven, Unwanted Behavior, Ubiquitous |
| 4. Quality Attributes | Performance, Security, Reliability (tabular format) |
| 5. Traceability | Upstream Sources, Downstream Artifacts, Tags, Thresholds |
| 6. References | Internal Documentation, External Standards |
Required Fields (6 mandatory):
@prd: PRD.NN.EE.SS value (NO ranges, NO multiple @prd values)XX% (Target: ≥90%)Source Document Rule (E044):
# VALID - Single @prd reference
| **Source Document** | @prd: PRD.01.07.01 |
# INVALID - Range or multiple values
| **Source Document** | @prd: PRD.12.19.01 - @prd: PRD.12.19.57 |
WHEN [triggering condition] THE [system] SHALL [response] WITHIN [constraint]
WHEN [trigger condition],
THE [system component] SHALL [action 1],
[action 2],
and [action 3]
WITHIN [timing constraint].
Example:
WHEN trade order received,
THE order management system SHALL validate order parameters
WITHIN 50 milliseconds (@threshold: PRD.035.timeout.order.validation).
WHILE [system state] THE [system] SHALL [behavior] WITHIN [constraint]
WHILE [state condition],
THE [system component] SHALL [continuous behavior]
WITHIN [operational context].
IF [error/problem] THE [system] SHALL [prevention/workaround] WITHIN [constraint]
IF [error condition],
THE [system component] SHALL [prevention/recovery action]
WITHIN [timing constraint].
THE [system] SHALL [system-wide requirement] WITHIN [architectural boundary]
THE [system component] SHALL [universal behavior]
for [scope/context].
Always use triple backticks for EARS statements:
#### EARS.01.25.01: Requirement Name
```
WHEN [condition],
THE [component] SHALL [action]
WITHIN [constraint].
```
**Traceability**: @brd: BRD.01.01.01 | @prd: PRD.01.07.01
Pattern: EARS.{DOC_NUM}.{ELEM_TYPE}.{SEQ} (4 segments, dot-separated)
| Element Type | Code | Example |
|---|---|---|
| EARS Statement | 25 | EARS.02.25.01 |
Category ID Ranges:
| Category | ID Range | Example |
|---|---|---|
| Event-Driven | 001-099 | EARS.01.25.001 |
| State-Driven | 101-199 | EARS.01.25.101 |
| Unwanted Behavior | 201-299 | EARS.01.25.201 |
| Ubiquitous | 401-499 | EARS.01.25.401 |
REMOVED PATTERNS - Do NOT use:
- Category prefixes:
E-XXX,S-XXX,Event-XXX,State-XXX- 3-segment format:
EARS.NN.EE- Dash-based:
EARS-NN-XXX
Purpose: Measures EARS maturity and readiness for BDD progression.
Format in Document Control:
| **BDD-Ready Score** | 95% (Target: ≥90%) |
| BDD-Ready Score | Required Status |
|---|---|
| ≥90% | Approved |
| 70-89% | In Review |
| <70% | Draft |
Requirements Clarity (40%):
Testability (35%):
Quality Attribute Completeness (15%):
Strategic Alignment (10%):
Quality Gate: Score <90% blocks BDD artifact creation.
Use tabular format for quality attribute requirements:
| QA ID | Requirement Statement | Metric | Target | Priority | Measurement Method |
|---|---|---|---|---|---|
| EARS.NN.02.01 | THE [component] SHALL complete [operation] | Latency | p95 < NNms | High | [method] |
| EARS.NN.02.02 | THE [component] SHALL process [workload] | Throughput | NN/s | Medium | [method] |
| Category | Keywords for Detection |
|---|---|
| Performance | latency, throughput, response time, p95, p99 |
| Reliability | availability, MTBF, MTTR, fault tolerance, recovery |
| Scalability | concurrent users, data volumes, horizontal scaling |
| Security | authentication, authorization, encryption, RBAC |
| Observability | logging, monitoring, tracing, alerting, metrics |
| Maintainability | code coverage, deployment, CI/CD, documentation |
Mandatory Keywords:
Avoid ambiguous terms: "fast", "efficient", "user-friendly" Use quantifiable metrics: "within 100ms", "with 99.9% uptime"
Purpose: EARS documents REFERENCE thresholds defined in PRD threshold registry. All quantitative values must use @threshold: tags.
Threshold Naming Convention: @threshold: PRD.NN.category.subcategory.key
Example Usage:
WHEN [trigger condition],
THE [system component] SHALL [action]
WITHIN @threshold: PRD.035.timeout.request.sync.
Common Threshold Categories:
timing:
- "@threshold: PRD.NN.timeout.request.sync"
- "@threshold: PRD.NN.timeout.connection.default"
performance:
- "@threshold: PRD.NN.perf.api.p95_latency"
- "@threshold: PRD.NN.perf.batch.max_duration"
limits:
- "@threshold: PRD.NN.limit.api.requests_per_second"
error:
- "@threshold: PRD.NN.sla.error_rate.target"
| Notation | Format | Artifacts | Purpose |
|---|---|---|---|
| Dash | TYPE-NN | ADR, SPEC, CTR | Technical artifacts - document references |
| Dot | TYPE.NN.TT.SS | BRD, PRD, EARS, BDD, SYS, REQ, IMPL, TASKS | Hierarchical artifacts - element references |
Layer 3 (EARS): Must include tags from Layers 1-2 (BRD, PRD)
Tag Count: 2 tags (@brd, @prd)
Format:
## Traceability
**Required Tags** (Cumulative Tagging Hierarchy - Layer 3):
```markdown
@brd: BRD.01.01.03, BRD.01.01.10
@prd: PRD.01.07.02, PRD.01.07.15
### Traceability Tag Separators (E041)
**Inline format** - Use pipes:
```markdown
**Traceability**: @brd: BRD.02.01.10 | @prd: PRD.02.01.01 | @threshold: PRD.035.key
List format - Also valid:
**Traceability**:
- @brd: BRD.02.01.10
- @prd: PRD.02.01.01
- @threshold: PRD.035.category.key
CRITICAL: Do NOT use numeric downstream references until artifacts exist.
# INVALID - Numeric references to non-existent artifacts
Downstream: BDD-01, ADR-02, REQ-03
# VALID - Generic downstream names
Downstream: BDD, ADR, SYS, REQ, SPEC
Limits:
When to Split:
Splitting Process:
EARS-{NN}.0_index.md using EARS-SECTION-0-TEMPLATE.mdEARS-{NN}.{S}_{slug}.md using EARS-SECTION-TEMPLATE.mdPattern: EARS-00_*.md
Scope: Documents with reserved ID 000 are FULLY EXEMPT from validation.
Document Types:
EARS-00_index.md)EARS-00_TRACEABILITY_MATRIX-TEMPLATE.md)Read and understand BRD and PRD that drive these formal requirements.
Check docs/EARS/ for next available ID number (e.g., EARS-01, EARS-02).
ID Numbering Convention: Start with 2 digits and expand only as needed.
Location: docs/EARS/EARS-NN_{slug}.md
Example: docs/EARS/EARS-01_risk_limits.md
Complete all required metadata fields:
Group requirements into 4 categories:
For each requirement:
Use tabular format for Performance, Security, Reliability requirements.
Include @brd and @prd tags (Layers 1-2) in Traceability section.
Document all thresholds used in section 5.4.
MANDATORY: Create or update docs/EARS/EARS-00_TRACEABILITY_MATRIX.md
Run validation scripts:
# EARS validation
python scripts/validate_ears.py --path docs/EARS/EARS-01_*.md
# Cumulative tagging validation
python ai_dev_flow/scripts/validate_tags_against_docs.py \
--artifact EARS-01 \
--expected-layers brd,prd \
--strict
Commit EARS file and traceability matrix together.
Before starting batch creation:
EARS_SCHEMA.yaml for current metadata requirementsears (not ears-requirements)earsarchitecture_approaches: [value] (array)After creating every 5 EARS documents:
python scripts/validate_ears.py --path docs/EARSBefore ending session:
python scripts/validate_ears.py| Code | Description | Severity |
|---|---|---|
| E001 | YAML frontmatter invalid | ERROR |
| E002 | Required tags missing (ears, layer-3-artifact) | ERROR |
| E003 | Forbidden tag patterns (ears-requirements, etc.) | ERROR |
| E004 | Missing custom_fields | ERROR |
| E005 | document_type not 'ears' | ERROR |
| E006 | artifact_type not 'EARS' | ERROR |
| E007 | layer not 3 | ERROR |
| E008 | architecture_approaches not array | ERROR |
| E010 | Required sections missing | ERROR |
| E011 | Section numbering starts with 0 | ERROR |
| E013 | Document Control not in table format | ERROR |
| E020 | Malformed table syntax | ERROR |
| E030 | Requirement ID format invalid | ERROR |
| E040 | Source Document missing @prd: prefix | ERROR |
| E041 | Traceability tags missing pipe separators | ERROR |
| E042 | Duplicate requirement IDs | ERROR |
| E044 | Source Document has multiple @prd values | ERROR |
| E045 | Numeric downstream references | ERROR |
| Mistake | Correction |
|---|---|
ears-requirements tag | Use ears |
document_type: engineering-requirements | Use document_type: ears |
architecture_approach: value | Use architecture_approaches: [value] |
#### Event-001: Title | Use #### EARS.01.25.01: Title |
Source Document: PRD-NN | Use Source Document: @prd: PRD.NN.EE.SS |
| Multiple @prd in Source Document | Use single @prd, list others in Upstream Sources |
@brd: X @prd: Y (no separators) | Use @brd: X | @prd: Y |
Downstream: BDD-01, ADR-02 | Use Downstream: BDD, ADR |
Status: Approved (with 50% score) | Use Status: Draft |
## 0. Document Control | Use ## Document Control (no numbering) |
CRITICAL: Execute validation loop IMMEDIATELY after document creation.
LOOP:
1. Run: python scripts/validate_ears.py --path {doc_path}
2. IF errors fixed: GOTO LOOP (re-validate)
3. IF warnings fixed: GOTO LOOP (re-validate)
4. IF unfixable issues: Log for manual review
5. IF clean: Mark VALIDATED, proceed
Blocking: YES - Cannot proceed to BDD creation until validation passes with 0 errors.
After creating EARS, use:
doc-bdd - Create BDD test scenarios (Layer 4)
The BDD will:
@brd, @prd, @ears tags (cumulative)ai_dev_flow/EARS/EARS-TEMPLATE.md (Template Version 3.0, primary authority)ai_dev_flow/EARS/EARS_SCHEMA.yaml (machine-readable validation)ai_dev_flow/EARS/EARS_CREATION_RULES.mdai_dev_flow/EARS/EARS_VALIDATION_RULES.md.claude/skills/doc-flow/SHARED_CONTENT.mdai_dev_flow/ID_NAMING_STANDARDS.mdai_dev_flow/THRESHOLD_NAMING_RULES.mdSection Templates (for documents >300 lines):
ai_dev_flow/EARS/EARS-SECTION-0-TEMPLATE.mdai_dev_flow/EARS/EARS-SECTION-TEMPLATE.md| Item | Value |
|---|---|
| Purpose | Formalize requirements with WHEN-THE-SHALL-WITHIN syntax |
| Layer | 3 |
| Tags Required | @brd, @prd (2 tags) |
| BDD-Ready Score | ≥90% required for "Approved" status |
| Element ID Format | EARS.NN.25.SS (4-segment unified format) |
| Source Document | Single @prd: PRD.NN.EE.SS value |
| Downstream References | Generic names only (no numeric IDs) |
| File Size Limit | 600 lines maximum |
| Next Skill | doc-bdd |
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.
Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.
Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.
Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.
Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.
Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.
Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.
Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.
Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.
Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".
Opus.ai: Revolutionize Your Web Experience
Build a no-code AI app in minutes.
An IDE for code migration from legacy to modern frameworks through coding agents.
Automate CGI animation in live-action scenes
Branded artistic QR-code concepts
Launch a website in seconds with AI.
Streamline Your Coding Experience with AI Code Helper
Convert any screenshot or design to clean code.