structguru 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. structguru-0.1.0/.agents/SCHEMA.yaml +1080 -0
  2. structguru-0.1.0/.agents/STANDARDS.md +1170 -0
  3. structguru-0.1.0/.agents/STANDARD_UPDATE_PLAYBOOK.md +175 -0
  4. structguru-0.1.0/.agents/contexts/conventions/FILE_PLACEMENT_MAP.md +99 -0
  5. structguru-0.1.0/.agents/contexts/conventions/STYLE_PROFILE.md +128 -0
  6. structguru-0.1.0/.agents/contexts/security/DEPENDENCY_POLICY.md +53 -0
  7. structguru-0.1.0/.agents/contexts/security/SECRETS_POLICY.md +55 -0
  8. structguru-0.1.0/.agents/contexts/security/SECURITY_OVERVIEW.md +67 -0
  9. structguru-0.1.0/.agents/contexts/security/THREAT_MODEL.md +59 -0
  10. structguru-0.1.0/.agents/rag.manifest.template.yaml +34 -0
  11. structguru-0.1.0/.agents/rag.manifest.yaml +34 -0
  12. structguru-0.1.0/.agents/research/agent-runtime-features_codex-claude-gemini_v0.1.0.md +118 -0
  13. structguru-0.1.0/.agents/research/agentic-cybersecurity-best-practices_v0.1.0.md +157 -0
  14. structguru-0.1.0/.agents/research/token-compression-techniques_v0.1.0.md +322 -0
  15. structguru-0.1.0/.agents/runbooks/BOOTSTRAP_EMPTY_REPO.md +154 -0
  16. structguru-0.1.0/.agents/runbooks/MIGRATE_FROM_CURSOR.md +119 -0
  17. structguru-0.1.0/.agents/runbooks/README.md +35 -0
  18. structguru-0.1.0/.agents/runbooks/security/SECURITY_CHANGE_CHECKLIST.md +73 -0
  19. structguru-0.1.0/.agents/runbooks/update_project_conventions_from_git.md +102 -0
  20. structguru-0.1.0/.agents/schemas/README.md +31 -0
  21. structguru-0.1.0/.agents/skills/project-conventions/SKILL.md +76 -0
  22. structguru-0.1.0/.agents/skills/senior-python-developer/SKILL.md +97 -0
  23. structguru-0.1.0/.agents/templates/AGENTS_TEMPLATE.md +62 -0
  24. structguru-0.1.0/.agents/templates/CURSORIGNORE_TEMPLATE +15 -0
  25. structguru-0.1.0/.agents/templates/CURSORINDEXINGIGNORE_TEMPLATE +9 -0
  26. structguru-0.1.0/.agents/templates/CURSOR_GLOBAL_RULE_TEMPLATE.mdc +23 -0
  27. structguru-0.1.0/.agents/templates/DOCUMENT_TEMPLATE.md +90 -0
  28. structguru-0.1.0/.agents/templates/FILE_PLACEMENT_MAP_TEMPLATE.md +83 -0
  29. structguru-0.1.0/.agents/templates/RESEARCH_TEMPLATE.md +112 -0
  30. structguru-0.1.0/.agents/templates/RUNBOOK_TEMPLATE.md +44 -0
  31. structguru-0.1.0/.agents/templates/SECURITY_POLICY_TEMPLATE.md +53 -0
  32. structguru-0.1.0/.agents/templates/SKILL_TEMPLATE.md +76 -0
  33. structguru-0.1.0/.agents/templates/SOURCE_TEMPLATE.md +63 -0
  34. structguru-0.1.0/.agents/templates/STYLE_PROFILE_TEMPLATE.md +112 -0
  35. structguru-0.1.0/.aiexclude +43 -0
  36. structguru-0.1.0/.claude/settings.local.json +29 -0
  37. structguru-0.1.0/.idea/.gitignore +10 -0
  38. structguru-0.1.0/.idea/copilot.data.migration.ask2agent.xml +6 -0
  39. structguru-0.1.0/.idea/inspectionProfiles/Project_Default.xml +14 -0
  40. structguru-0.1.0/.idea/inspectionProfiles/profiles_settings.xml +6 -0
  41. structguru-0.1.0/.idea/misc.xml +8 -0
  42. structguru-0.1.0/.idea/modules.xml +8 -0
  43. structguru-0.1.0/.idea/structguru.iml +10 -0
  44. structguru-0.1.0/.idea/vcs.xml +6 -0
  45. structguru-0.1.0/.idea/workspace.xml +128 -0
  46. structguru-0.1.0/AGENT.md +1 -0
  47. structguru-0.1.0/AGENTS.md +67 -0
  48. structguru-0.1.0/CLAUDE.md +1 -0
  49. structguru-0.1.0/CODE_SUMMARY.md +52 -0
  50. structguru-0.1.0/GEMINI.md +1 -0
  51. structguru-0.1.0/LICENSE +21 -0
  52. structguru-0.1.0/Makefile +35 -0
  53. structguru-0.1.0/PKG-INFO +391 -0
  54. structguru-0.1.0/PROMPT_STRUCTGURU.md +701 -0
  55. structguru-0.1.0/README.md +341 -0
  56. structguru-0.1.0/pyproject.toml +94 -0
  57. structguru-0.1.0/src/structguru/__init__.py +26 -0
  58. structguru-0.1.0/src/structguru/config.py +285 -0
  59. structguru-0.1.0/src/structguru/core.py +264 -0
  60. structguru-0.1.0/src/structguru/exceptions.py +82 -0
  61. structguru-0.1.0/src/structguru/integrations/__init__.py +5 -0
  62. structguru-0.1.0/src/structguru/integrations/asgi.py +101 -0
  63. structguru-0.1.0/src/structguru/integrations/celery.py +80 -0
  64. structguru-0.1.0/src/structguru/integrations/django.py +125 -0
  65. structguru-0.1.0/src/structguru/integrations/flask.py +79 -0
  66. structguru-0.1.0/src/structguru/integrations/grpc.py +60 -0
  67. structguru-0.1.0/src/structguru/integrations/sentry.py +97 -0
  68. structguru-0.1.0/src/structguru/integrations/sqlalchemy.py +79 -0
  69. structguru-0.1.0/src/structguru/metrics.py +65 -0
  70. structguru-0.1.0/src/structguru/otel.py +32 -0
  71. structguru-0.1.0/src/structguru/processors.py +95 -0
  72. structguru-0.1.0/src/structguru/py.typed +0 -0
  73. structguru-0.1.0/src/structguru/queued.py +88 -0
  74. structguru-0.1.0/src/structguru/redaction.py +75 -0
  75. structguru-0.1.0/src/structguru/routing.py +63 -0
  76. structguru-0.1.0/src/structguru/sampling.py +104 -0
  77. structguru-0.1.0/tests/conftest.py +30 -0
  78. structguru-0.1.0/tests/test_config.py +168 -0
  79. structguru-0.1.0/tests/test_core.py +284 -0
  80. structguru-0.1.0/tests/test_exceptions.py +99 -0
  81. structguru-0.1.0/tests/test_integrations/__init__.py +0 -0
  82. structguru-0.1.0/tests/test_integrations/test_asgi.py +138 -0
  83. structguru-0.1.0/tests/test_integrations/test_celery.py +131 -0
  84. structguru-0.1.0/tests/test_integrations/test_django.py +91 -0
  85. structguru-0.1.0/tests/test_integrations/test_flask.py +73 -0
  86. structguru-0.1.0/tests/test_integrations/test_grpc.py +60 -0
  87. structguru-0.1.0/tests/test_integrations/test_sentry.py +83 -0
  88. structguru-0.1.0/tests/test_integrations/test_sqlalchemy.py +72 -0
  89. structguru-0.1.0/tests/test_metrics.py +61 -0
  90. structguru-0.1.0/tests/test_otel.py +57 -0
  91. structguru-0.1.0/tests/test_processors.py +125 -0
  92. structguru-0.1.0/tests/test_queued.py +63 -0
  93. structguru-0.1.0/tests/test_redaction.py +62 -0
  94. structguru-0.1.0/tests/test_routing.py +51 -0
  95. structguru-0.1.0/tests/test_sampling.py +86 -0
  96. structguru-0.1.0/uv.lock +1122 -0
@@ -0,0 +1,1080 @@
1
+ # =============================================================================
2
+ # AI Agent Documentation Schema v2.4
3
+ # =============================================================================
4
+ # Complete field definitions for AI Agent Documentation Standards
5
+ #
6
+ # Enhancements in v2.4:
7
+ # - Patch v2.4.8: optional security_posture (protected paths, SBOM/SLSA posture)
8
+ # - Cross-platform compatibility (AGENTS.md)
9
+ # - MCP (Model Context Protocol) integration
10
+ # - A2A (Agent-to-Agent) protocol support
11
+ # - OASF (Open Agentic Schema Framework) taxonomy
12
+ # - OpenTelemetry GenAI semantic conventions
13
+ # - Context engineering (budgeting, progressive disclosure, retrieval hints)
14
+ #
15
+ # References:
16
+ # - MCP: https://modelcontextprotocol.io/specification/2025-11-25
17
+ # - A2A: https://github.com/a2aproject/A2A
18
+ # - OASF: https://schema.oasf.outshift.com/
19
+ # - OTel GenAI: https://opentelemetry.io/docs/specs/semconv/gen-ai/
20
+ # - AGENTS.md: https://agents.md/
21
+ # - Codex AGENTS.md guide: https://developers.openai.com/codex/guides/agents-md/
22
+ # - Codex security: https://developers.openai.com/codex/security/
23
+ # - Codex rules: https://developers.openai.com/codex/rules
24
+ # - Codex non-interactive mode: https://developers.openai.com/codex/noninteractive
25
+ # - Codex MCP: https://developers.openai.com/codex/mcp
26
+ # - Codex skills: https://developers.openai.com/codex/skills
27
+ # - Claude Code docs: https://code.claude.com/docs/en/overview
28
+ # - Gemini Code Assist agent mode: https://developers.google.com/gemini-code-assist/docs/agent-mode/overview
29
+ # - Gemini Code Assist .aiexclude: https://developers.google.com/gemini-code-assist/docs/exclude-files
30
+ # - Claude Code best practices: https://www.anthropic.com/engineering/claude-code-best-practices
31
+ # - Gemini agent files (Android Studio): https://developer.android.com/studio/gemini/agent-files
32
+ # - GitLab Duo AGENTS.md: https://docs.gitlab.com/user/gitlab_duo/customize_duo/agents_md/
33
+ # - Codex agent loop deep dive: https://openai.com/index/unrolling-the-codex-agent-loop/
34
+
35
+ # =============================================================================
36
+
37
+ _meta:
38
+ schema_version: "2.4"
39
+ title: Schema Definitions
40
+ status: active
41
+ version: "2.4.12"
42
+ last_updated: "2026-02-06"
43
+ # =============================================================================
44
+ # VALIDATION SEVERITY LEVELS
45
+ # =============================================================================
46
+
47
+ validation_severities:
48
+ ERROR: "Document invalid, must not be consumed"
49
+ WARNING: "Document incomplete, proceed with caution"
50
+ INFO: "Suggestion only, no action required"
51
+
52
+ # =============================================================================
53
+ # REQUIRED FIELDS
54
+ # =============================================================================
55
+
56
+ fields:
57
+
58
+ schema_version:
59
+ type: string
60
+ required: true
61
+ validation: ERROR
62
+ description: Schema version this document conforms to
63
+ pattern: '^\d+\.\d+$'
64
+ example: "2.4"
65
+ notes: |
66
+ Agents MUST reject documents with a higher major version.
67
+ Format: MAJOR.MINOR (no patch version)
68
+
69
+ title:
70
+ type: string
71
+ required: true
72
+ validation: ERROR
73
+ description: Human-readable document title
74
+ max_length: 200
75
+ example: "Payment Gateway Service Context"
76
+
77
+ description:
78
+ type: string
79
+ required: false
80
+ validation: WARNING
81
+ description: Short summary used for listings and retrieval (1–3 sentences)
82
+ max_length: 400
83
+ example: "Context for the Payment Gateway service: purpose, boundaries, and key integrations."
84
+ notes: |
85
+ RECOMMENDED for better search and progressive disclosure.
86
+ Use a quoted string in YAML frontmatter.
87
+
88
+
89
+ category:
90
+ type: enum
91
+ required: true
92
+ validation: ERROR
93
+ description: Document classification
94
+ values:
95
+ - service-context # Service/application documentation
96
+ - skill # Reusable capability or pattern
97
+ - decision-record # Architectural decision record (ADR)
98
+ - runbook # Operational procedures
99
+ - agent-config # AI agent configuration
100
+ - api-spec # API documentation
101
+ - data-model # Data structure definitions
102
+ - integration # Third-party integration docs
103
+ - security # Security policies
104
+ - testing # Test strategies
105
+ - specification # Product/technical specifications
106
+ - research-report # Research results with sources/evidence
107
+ - source-document # Captured source material / provenance record
108
+
109
+ status:
110
+ type: enum
111
+ required: true
112
+ validation: ERROR
113
+ description: Document lifecycle status
114
+ values:
115
+ - active # Current, authoritative
116
+ - deprecated # Being phased out
117
+ - sunset # No longer valid
118
+ - draft # Work in progress
119
+ default: active
120
+ agent_behavior:
121
+ active: "Consume normally"
122
+ deprecated: "Warn, suggest alternatives, proceed with caution"
123
+ sunset: "Do not use, search for replacement"
124
+ draft: "Use only if explicitly requested"
125
+
126
+ last_updated:
127
+ type: date
128
+ required: true
129
+ validation: ERROR
130
+ description: Date of last modification
131
+ format: "ISO-8601 (YYYY-MM-DD)"
132
+ example: "2026-01-02"
133
+
134
+ notes: |
135
+ Prefer quoting the date string in YAML frontmatter:
136
+ last_updated: "2026-01-02"
137
+ This avoids YAML 1.1 implicit date parsing differences across parsers.
138
+
139
+ # =============================================================================
140
+ # RECOMMENDED FIELDS
141
+ # =============================================================================
142
+
143
+ version:
144
+ type: string
145
+ required: false
146
+ validation: WARNING
147
+ description: Document content version (semver)
148
+ pattern: '^\d+\.\d+\.\d+$'
149
+ example: "1.2.0"
150
+
151
+ notes: |
152
+ Use a quoted string in YAML frontmatter:
153
+ version: "1.2.0"
154
+
155
+ retrieval_priority:
156
+ type: enum
157
+ required: false
158
+ validation: WARNING
159
+ description: Importance for retrieval ranking
160
+ values:
161
+ - critical # Must be retrieved
162
+ - high # Strong preference
163
+ - medium # Standard priority
164
+ - low # Only if highly relevant
165
+ default: medium
166
+
167
+ retrieval_scope:
168
+ type: enum
169
+ required: false
170
+ validation: WARNING
171
+ description: Applicability scope
172
+ values:
173
+ - service # Specific to one service
174
+ - skill # Reusable across services
175
+ - global # Organization-wide
176
+ default: service
177
+ tie_breaker_order: ["service", "skill", "global"]
178
+
179
+ last_verified:
180
+ type: date
181
+ required: false
182
+ validation: WARNING
183
+ description: Date content was verified accurate
184
+ format: "ISO-8601 (YYYY-MM-DD)"
185
+
186
+ notes: |
187
+ Prefer quoting the date string in YAML frontmatter:
188
+ last_verified: "2026-01-02"
189
+ This avoids YAML 1.1 implicit date parsing differences across parsers.
190
+
191
+ owner:
192
+ type: string
193
+ required: false
194
+ validation: WARNING
195
+ description: Team or individual responsible
196
+ example: "Payments Team"
197
+
198
+ verification_owner:
199
+ type: string
200
+ required: false
201
+ validation: INFO
202
+ description: Team responsible for verification
203
+ example: "Platform Engineering"
204
+
205
+ # =============================================================================
206
+ # OPTIONAL - BASIC METADATA
207
+ # =============================================================================
208
+
209
+ name:
210
+ type: string
211
+ required: false
212
+ validation: INFO
213
+ description: |
214
+ Stable identifier used by agent skill loaders (e.g., Codex `SKILL.md`).
215
+ RECOMMENDED for `category: skill` documents and REQUIRED for Codex skill compatibility.
216
+ pattern: '^[a-z0-9][a-z0-9-]{2,64}$'
217
+ example: "project-conventions"
218
+ notes: |
219
+ In `SKILL.md`, Codex requires top-level `name` and `description` fields in YAML frontmatter.
220
+ Keep `description` a single line (avoid multi-line YAML blocks) for maximum compatibility.
221
+
222
+ service_type:
223
+ type: enum
224
+ required: false
225
+ values:
226
+ - application
227
+ - library
228
+ - infrastructure
229
+ - platform
230
+ - tool
231
+ - external
232
+
233
+ language:
234
+ type: enum
235
+ required: false
236
+ values:
237
+ - csharp
238
+ - python
239
+ - typescript
240
+ - javascript
241
+ - go
242
+ - rust
243
+ - java
244
+ - kotlin
245
+ - ruby
246
+ - php
247
+ - multi
248
+
249
+ framework:
250
+ type: string
251
+ required: false
252
+ examples: ["dotnet-9", "fastapi", "nextjs-15", "spring-boot"]
253
+
254
+ tags:
255
+ type: array[string]
256
+ required: false
257
+ example: ["payment", "kafka", "microservice"]
258
+
259
+ keywords:
260
+ type: array[string]
261
+ required: false
262
+ description: Search terms for retrieval
263
+ example: ["billing", "transactions", "refunds"]
264
+
265
+ audience:
266
+ type: array[enum]
267
+ required: false
268
+ values: [developer, architect, devops, security, product, support, all]
269
+
270
+ difficulty:
271
+ type: enum
272
+ required: false
273
+ values: [beginner, intermediate, advanced, expert]
274
+
275
+ depends_on:
276
+ type: array[string]
277
+ required: false
278
+ description: Dependencies (services or document paths)
279
+ example: ["kafka", "postgresql", "./auth-context.md"]
280
+
281
+ supersedes:
282
+ type: string
283
+ required: false
284
+ description: Document this replaces
285
+ example: "./old-payment-context.md"
286
+
287
+ superseded_by:
288
+ type: string
289
+ required: false
290
+ description: Document replacing this one
291
+ example: "./new-payment-context.md"
292
+
293
+ # =============================================================================
294
+ # KNOWLEDGE CAPTURE: RESEARCH & SOURCES (v2.4.3)
295
+ # =============================================================================
296
+
297
+ doc_id:
298
+ type: string
299
+ required: false
300
+ validation: INFO
301
+ description: Stable identifier for this document (recommended for RAG + renames)
302
+ pattern: '^[a-z0-9][a-z0-9-]{2,64}$'
303
+ example: "payments-stripe-refunds"
304
+
305
+ notes: |
306
+ Use a short, stable slug. Do not include dates unless the document is inherently time-bound.
307
+ Prefer keeping doc_id stable even if the filename/path changes.
308
+
309
+ data_handling:
310
+ type: object
311
+ required: false
312
+ validation: INFO
313
+ description: Data classification and RAG ingestion safety flags
314
+ properties:
315
+ classification:
316
+ type: enum
317
+ values: [public, internal, confidential, restricted]
318
+ default: internal
319
+ pii:
320
+ type: enum
321
+ values: [none, low, high]
322
+ default: none
323
+ contains_secrets:
324
+ type: boolean
325
+ default: false
326
+ rag_allowed:
327
+ type: boolean
328
+ default: true
329
+ description: Whether this document may be indexed/embedded for RAG
330
+
331
+
332
+
333
+ # ---------------------------------------------------------------------------
334
+ # Agent runtime integration (optional)
335
+ # ---------------------------------------------------------------------------
336
+
337
+ execution_policy:
338
+ type: object
339
+ required: false
340
+ validation: INFO
341
+ description: Declared execution posture (sandbox, approvals, network, web search)
342
+ properties:
343
+ default_mode:
344
+ type: enum
345
+ values: [read-only, workspace-write, full-auto]
346
+ default: read-only
347
+
348
+ network:
349
+ type: object
350
+ properties:
351
+ default:
352
+ type: enum
353
+ values: [off, allowlist, on]
354
+ default: off
355
+ allowlist_domains:
356
+ type: array[string]
357
+ required: false
358
+ example:
359
+ - "docs.example.com"
360
+
361
+ approvals:
362
+ type: object
363
+ properties:
364
+ for_workspace_writes:
365
+ type: enum
366
+ values: [never, on-request, always]
367
+ default: on-request
368
+ for_network:
369
+ type: enum
370
+ values: [never, on-request, always]
371
+ default: on-request
372
+ for_outside_workspace:
373
+ type: enum
374
+ values: [never, on-request, always]
375
+ default: always
376
+
377
+ web_search:
378
+ type: object
379
+ properties:
380
+ mode:
381
+ type: enum
382
+ values: [disabled, cached, live]
383
+ default: cached
384
+
385
+ notes: |
386
+ This is a tool-agnostic declaration that can be mapped to:
387
+ - Codex sandbox + approval policy + web_search settings
388
+ - Claude Code permission modes / allowlists
389
+ - Gemini agent mode tool permissions / plan approvals
390
+
391
+ context_exclusion:
392
+ type: object
393
+ required: false
394
+ validation: INFO
395
+ description: Explicit denylist of files/paths that must not be loaded into agent context
396
+ properties:
397
+ aiexclude_file:
398
+ type: string
399
+ default: ".aiexclude"
400
+ patterns:
401
+ type: array[string]
402
+ required: false
403
+ description: Optional explicit patterns (use .gitignore syntax)
404
+ notes:
405
+ type: string
406
+ required: false
407
+
408
+ automation:
409
+ type: object
410
+ required: false
411
+ validation: INFO
412
+ description: Automation/CI settings for agent runs (structured outputs, event logs)
413
+ properties:
414
+ output_schema_paths:
415
+ type: array[string]
416
+ required: false
417
+ description: Paths to JSON Schemas used for structured outputs
418
+ example:
419
+ - ".agents/schemas/release-metadata.schema.json"
420
+ event_log:
421
+ type: object
422
+ required: false
423
+ properties:
424
+ format:
425
+ type: enum
426
+ values: [jsonl, json, text]
427
+ default: jsonl
428
+ path:
429
+ type: string
430
+ required: false
431
+ example: ".agents/artifacts/codex-exec.events.jsonl"
432
+
433
+ project_conventions:
434
+ type: object
435
+ required: false
436
+ validation: INFO
437
+ description: References to repo-level style and file placement convention docs (and optional exemplars)
438
+ properties:
439
+ style_profile_ref:
440
+ type: string
441
+ required: false
442
+ example: ".agents/contexts/conventions/STYLE_PROFILE.md"
443
+ file_placement_map_ref:
444
+ type: string
445
+ required: false
446
+ example: ".agents/contexts/conventions/FILE_PLACEMENT_MAP.md"
447
+ exemplars:
448
+ type: array[string]
449
+ required: false
450
+ description: Optional exemplar file paths that define the house style
451
+ example:
452
+ - "src/<feature>/<module>.ts"
453
+ - "tests/<feature>/<module>.spec.ts"
454
+ enforcement:
455
+ type: enum
456
+ values: [advisory, required]
457
+ default: advisory
458
+ notes:
459
+ type: string
460
+ required: false
461
+
462
+ conventions_provenance:
463
+ type: object
464
+ required: false
465
+ validation: INFO
466
+ description: Provenance for conventions derived from git history or curated examples
467
+ properties:
468
+ source:
469
+ type: enum
470
+ values: [manual, git-history, mixed]
471
+ default: manual
472
+
473
+ git:
474
+ type: object
475
+ required: false
476
+ properties:
477
+ range:
478
+ type: string
479
+ required: false
480
+ description: Commit range used (e.g., "HEAD~200..HEAD" or "<sha>..<sha>")
481
+ since:
482
+ type: string
483
+ required: false
484
+ description: Optional time boundary (e.g., "6 months ago")
485
+ author:
486
+ type: string
487
+ required: false
488
+ description: Optional author filter (avoid personal identifiers where possible)
489
+ include_paths:
490
+ type: array[string]
491
+ required: false
492
+ exclude_paths:
493
+ type: array[string]
494
+ required: false
495
+ notes:
496
+ type: string
497
+ required: false
498
+
499
+ reviewed_by:
500
+ type: string
501
+ required: false
502
+ reviewed_date:
503
+ type: date
504
+ required: false
505
+ description: Date the provenance details were reviewed
506
+
507
+ security_posture:
508
+ type: object
509
+ required: false
510
+ validation: INFO
511
+ description: Machine-readable security posture and review gates for agentic work
512
+ properties:
513
+ risk_profile:
514
+ type: enum
515
+ values: [low, medium, high, critical]
516
+ default: medium
517
+ description: Overall security sensitivity of the repo/service
518
+
519
+ threat_model_ref:
520
+ type: string
521
+ required: false
522
+ description: Path to the canonical threat model doc
523
+ example: ".agents/contexts/security/THREAT_MODEL.md"
524
+
525
+ secrets_policy_ref:
526
+ type: string
527
+ required: false
528
+ description: Path to the canonical secrets handling policy
529
+ example: ".agents/contexts/security/SECRETS_POLICY.md"
530
+
531
+ dependency_policy_ref:
532
+ type: string
533
+ required: false
534
+ description: Path to dependency/supply-chain policy
535
+ example: ".agents/contexts/security/DEPENDENCY_POLICY.md"
536
+
537
+ supply_chain:
538
+ type: object
539
+ required: false
540
+ description: Optional supply-chain controls (SBOM, provenance)
541
+ properties:
542
+ sbom_required:
543
+ type: boolean
544
+ default: false
545
+ slsa_target:
546
+ type: string
547
+ required: false
548
+ description: Target SLSA level/track (if applicable)
549
+ example: "SLSA3"
550
+
551
+ protected_paths:
552
+ type: array[string]
553
+ required: false
554
+ description: Glob patterns requiring human review/approval
555
+ example:
556
+ - ".github/workflows/**"
557
+ - "infra/**"
558
+ - "terraform/**"
559
+ - "k8s/**"
560
+
561
+ notes:
562
+ type: string
563
+ required: false
564
+
565
+ sources:
566
+ type: array[object]
567
+ required: false
568
+ validation: INFO
569
+ description: |
570
+ Source list supporting the document (required for research reports).
571
+ Used for auditability, citations, and RAG metadata.
572
+ item_properties:
573
+ source_id:
574
+ type: string
575
+ pattern: '^src:[a-z0-9][a-z0-9-_]{2,64}$'
576
+ example: "src:openai-rag-help"
577
+ title:
578
+ type: string
579
+ kind:
580
+ type: enum
581
+ values: [web, pdf, paper, book, repo, issue, dataset, internal, other]
582
+ url:
583
+ type: string
584
+ description: Canonical URL (if external)
585
+ path:
586
+ type: string
587
+ description: Local repo path to stored snapshot/notes (if any)
588
+ example: ".agents/sources/external/openai-rag-help.md"
589
+ publisher:
590
+ type: string
591
+ authors:
592
+ type: array[string]
593
+ published_date:
594
+ type: date
595
+ accessed_date:
596
+ type: date
597
+ license:
598
+ type: string
599
+ description: License or usage note (if known)
600
+ checksum_sha256:
601
+ type: string
602
+ description: SHA-256 of stored snapshot (if stored)
603
+ notes:
604
+ type: string
605
+
606
+ research:
607
+ type: object
608
+ required: false
609
+ validation: INFO
610
+ description: Research metadata (required when category=research-report)
611
+ properties:
612
+ question:
613
+ type: string
614
+ description: Primary research question
615
+ scope:
616
+ type: string
617
+ description: Boundaries (what is and isn't covered)
618
+ method:
619
+ type: array[string]
620
+ description: Methods used (e.g., web search, reading RFCs, experiments)
621
+ findings:
622
+ type: array[object]
623
+ description: Key findings with optional evidence pointers
624
+ item_properties:
625
+ finding:
626
+ type: string
627
+ confidence:
628
+ type: enum
629
+ values: [high, medium, low]
630
+ default: medium
631
+ evidence:
632
+ type: array[object]
633
+ item_properties:
634
+ source_id:
635
+ type: string
636
+ locator:
637
+ type: string
638
+ description: Section/page/paragraph identifier
639
+ quote:
640
+ type: string
641
+ description: Short excerpt (keep brief for copyright)
642
+ open_questions:
643
+ type: array[string]
644
+ next_steps:
645
+ type: array[string]
646
+
647
+ rag:
648
+ type: object
649
+ required: false
650
+ validation: INFO
651
+ description: Optional overrides for RAG ingestion/indexing
652
+ properties:
653
+ collection:
654
+ type: string
655
+ description: Target collection/index name
656
+ example: "engineering"
657
+ include:
658
+ type: boolean
659
+ default: true
660
+ description: Whether to include in RAG indexing
661
+ chunking_override:
662
+ type: object
663
+ description: Overrides retrieval_hints for ingestion time
664
+ properties:
665
+ chunk_size:
666
+ type: integer
667
+ chunk_overlap:
668
+ type: integer
669
+
670
+ # =============================================================================
671
+ # CROSS-PLATFORM COMPATIBILITY (v2.4)
672
+ # =============================================================================
673
+
674
+ agents_md_compatible:
675
+ type: boolean
676
+ required: false
677
+ default: true
678
+ description: |
679
+ Document follows AGENTS.md conventions for cross-platform
680
+ AI agent compatibility (Copilot, Codex, Gemini, Cursor, etc.)
681
+
682
+ cross_platform_aliases:
683
+ type: array[string]
684
+ required: false
685
+ description: Alternative filenames for discovery
686
+ example: ["CLAUDE.md", "GEMINI.md", "AGENT.md", "COPILOT.md"]
687
+
688
+ # =============================================================================
689
+ # MCP - MODEL CONTEXT PROTOCOL (v2.4)
690
+ # =============================================================================
691
+
692
+ mcp_resource:
693
+ type: object
694
+ required: false
695
+ description: MCP resource metadata for tool/data integration
696
+ properties:
697
+ uri:
698
+ type: string
699
+ description: MCP resource URI
700
+ pattern: '^mcp://[a-z0-9-]+/[a-z0-9-/]+$'
701
+ example: "mcp://payment-gateway/transactions"
702
+ mime_type:
703
+ type: string
704
+ example: "application/json"
705
+ capabilities:
706
+ type: array[enum]
707
+ values: [tools, resources, prompts, sampling]
708
+ auth_type:
709
+ type: enum
710
+ values: [none, bearer, oauth2, api_key]
711
+ discovery_endpoint:
712
+ type: string
713
+ description: OAuth 2.1 discovery URL
714
+
715
+ mcp_tools:
716
+ type: array[object]
717
+ required: false
718
+ description: Tools exposed via MCP
719
+ item_properties:
720
+ name:
721
+ type: string
722
+ example: "getTransaction"
723
+ description:
724
+ type: string
725
+ parameters:
726
+ type: object
727
+ description: JSON Schema for parameters
728
+
729
+ # =============================================================================
730
+ # A2A - AGENT-TO-AGENT PROTOCOL (v2.4)
731
+ # =============================================================================
732
+
733
+ agent_card:
734
+ type: object
735
+ required: false
736
+ description: A2A AgentCard for agent discovery
737
+ properties:
738
+ agent_name:
739
+ type: string
740
+ example: "Payment Processor Agent"
741
+ agent_id:
742
+ type: string
743
+ pattern: '^[a-z0-9-]+$'
744
+ example: "payment-processor-v1"
745
+ skills:
746
+ type: array[string]
747
+ example: ["process-payment", "handle-refund"]
748
+ supported_modalities:
749
+ type: array[enum]
750
+ values: [text, structured-data, audio, video, file]
751
+ default: [text, structured-data]
752
+ auth_schemes:
753
+ type: array[enum]
754
+ values: [bearer, oauth2, api_key, mtls]
755
+ well_known_path:
756
+ type: string
757
+ default: "/.well-known/agent.json"
758
+
759
+ # =============================================================================
760
+ # OASF - OPEN AGENTIC SCHEMA FRAMEWORK (v2.4)
761
+ # =============================================================================
762
+
763
+ oasf_skills:
764
+ type: array[string]
765
+ required: false
766
+ description: |
767
+ Skills from OASF taxonomy (category/skill_name format)
768
+ Reference: https://schema.oasf.outshift.com/
769
+ example:
770
+ - "code_generation/source_code_generation"
771
+ - "natural_language_processing/semantic_understanding"
772
+ common_values:
773
+ - "natural_language_processing/contextual_comprehension"
774
+ - "natural_language_processing/semantic_understanding"
775
+ - "natural_language_processing/entity_recognition"
776
+ - "code_generation/source_code_generation"
777
+ - "code_generation/code_review"
778
+ - "code_generation/test_generation"
779
+ - "data_engineering/data_transformation_pipeline"
780
+ - "agent_orchestration/task_delegation"
781
+ - "agent_orchestration/multi_agent_planning"
782
+ - "evaluation_monitoring/output_evaluation"
783
+ - "evaluation_monitoring/performance_monitoring"
784
+
785
+ oasf_domains:
786
+ type: array[string]
787
+ required: false
788
+ description: |
789
+ Domains from OASF taxonomy (category/domain_name format)
790
+ example:
791
+ - "technology/software_development"
792
+ - "finance_and_business/payment_services"
793
+ common_values:
794
+ - "technology/software_development"
795
+ - "technology/cloud_computing"
796
+ - "technology/data_science"
797
+ - "technology/cybersecurity"
798
+ - "finance_and_business/payment_services"
799
+ - "finance_and_business/financial_analysis"
800
+ - "healthcare/clinical_services"
801
+
802
+ oasf_record_id:
803
+ type: string
804
+ required: false
805
+ description: OASF record identifier
806
+ pattern: '^oasf:[a-z0-9-]+:[a-z0-9.-]+$'
807
+ example: "oasf:payment-gateway:v1.0.0"
808
+
809
+ # =============================================================================
810
+ # OPENTELEMETRY GENAI SEMANTIC CONVENTIONS (v2.4)
811
+ # =============================================================================
812
+
813
+ observability:
814
+ type: object
815
+ required: false
816
+ description: OpenTelemetry GenAI attributes
817
+ properties:
818
+ otel_service_name:
819
+ type: string
820
+ description: service.name attribute
821
+ example: "payment-gateway"
822
+ gen_ai_agent_name:
823
+ type: string
824
+ description: gen_ai.agent.name attribute
825
+ gen_ai_agent_id:
826
+ type: string
827
+ description: gen_ai.agent.id attribute
828
+ gen_ai_provider:
829
+ type: enum
830
+ values: [anthropic, openai, aws.bedrock, azure.openai, google.vertex]
831
+ custom_attributes:
832
+ type: object
833
+ description: Additional OTel attributes
834
+ example:
835
+ deployment.environment: "production"
836
+ service.version: "1.2.0"
837
+
838
+ metrics:
839
+ type: array[string]
840
+ required: false
841
+ description: OTel metrics reported
842
+ common_values:
843
+ - "gen_ai.client.token.usage"
844
+ - "gen_ai.client.operation.duration"
845
+ - "gen_ai.server.request.duration"
846
+ - "gen_ai.server.time_to_first_token"
847
+
848
+ # =============================================================================
849
+ # CONTEXT ENGINEERING (v2.4)
850
+ # =============================================================================
851
+
852
+ context_budget:
853
+ type: object
854
+ required: false
855
+ description: Token budgeting for context management
856
+ properties:
857
+ full_tokens:
858
+ type: integer
859
+ description: Tokens for complete document
860
+ example: 2500
861
+ summary_tokens:
862
+ type: integer
863
+ description: Tokens for metadata only
864
+ example: 150
865
+ min_useful_tokens:
866
+ type: integer
867
+ description: Minimum for useful context
868
+ example: 500
869
+
870
+ progressive_disclosure:
871
+ type: object
872
+ required: false
873
+ description: Staged content loading
874
+ properties:
875
+ level_1:
876
+ type: array[string]
877
+ description: Always load (metadata)
878
+ default: [title, description, category, status]
879
+ level_2:
880
+ type: array[string]
881
+ description: Load on relevance match
882
+ example: [overview, architecture, key_concepts]
883
+ level_3:
884
+ type: array[string]
885
+ description: Load on explicit request
886
+ example: [full_content, code_examples, troubleshooting]
887
+
888
+ retrieval_hints:
889
+ type: object
890
+ required: false
891
+ description: RAG optimization hints
892
+ properties:
893
+ chunk_size:
894
+ type: integer
895
+ description: Recommended chunk size (tokens)
896
+ default: 500
897
+ chunk_overlap:
898
+ type: integer
899
+ description: Token overlap between chunks
900
+ default: 50
901
+ key_sections:
902
+ type: array[string]
903
+ description: High-value sections
904
+ example: [overview, api-endpoints, configuration]
905
+ semantic_anchors:
906
+ type: array[string]
907
+ description: Key phrases for semantic search
908
+ example: ["payment processing", "Stripe integration"]
909
+ exclude_from_retrieval:
910
+ type: array[string]
911
+ description: Sections to exclude
912
+ example: [changelog, appendix, references]
913
+
914
+ # =============================================================================
915
+ # AGENT NOTES (Enhanced in v2.4)
916
+ # =============================================================================
917
+
918
+ agent_notes:
919
+ type: object
920
+ required: false
921
+ description: Machine-readable hints for AI agents
922
+ properties:
923
+ # Core (from v2.3)
924
+ confidence:
925
+ type: enum
926
+ values: [high, medium, low]
927
+ default: medium
928
+ safe_for_codegen:
929
+ type: boolean
930
+ default: false
931
+ requires_human_review:
932
+ type: boolean
933
+ default: true
934
+
935
+ # Enhanced (v2.4)
936
+ embedding_hint:
937
+ type: string
938
+ description: Alternative text for embedding generation
939
+ example: "Payment gateway for .NET 9 with Stripe"
940
+ tool_hints:
941
+ type: array[string]
942
+ description: Suggested tools for this document
943
+ example: ["code-search", "api-tester", "database-query"]
944
+ agent_capabilities_required:
945
+ type: array[string]
946
+ description: Capabilities needed to use effectively
947
+ example: ["code-execution", "web-fetch", "file-write"]
948
+ max_context_window:
949
+ type: integer
950
+ description: Minimum context window required (tokens)
951
+ example: 8000
952
+
953
+ # =============================================================================
954
+ # TIE-BREAKER RULES
955
+ # =============================================================================
956
+
957
+ tie_breaker_rules:
958
+ - order: 1
959
+ field: status
960
+ direction: "active > deprecated > sunset > draft"
961
+ description: "Active documents always win"
962
+
963
+ - order: 2
964
+ field: last_verified
965
+ direction: desc
966
+ description: "More recently verified wins"
967
+
968
+ - order: 3
969
+ field: retrieval_scope
970
+ direction: "service > skill > global"
971
+ description: "More specific scope wins"
972
+
973
+ - order: 4
974
+ field: retrieval_priority
975
+ direction: "critical > high > medium > low"
976
+ description: "Higher priority wins"
977
+
978
+ - order: 5
979
+ field: path_depth
980
+ direction: desc
981
+ description: "Deeper paths win"
982
+
983
+ - order: 6
984
+ field: filename
985
+ direction: asc
986
+ description: "Alphabetical as final tie-breaker"
987
+
988
+ # =============================================================================
989
+ # VALIDATION RULES
990
+ # =============================================================================
991
+
992
+ validation_rules:
993
+ # Required field rules
994
+ - id: SCHEMA_001
995
+ severity: ERROR
996
+ rule: "schema_version must be present and valid"
997
+ check: "frontmatter.schema_version matches ^\\d+\\.\\d+$"
998
+
999
+ - id: SCHEMA_002
1000
+ severity: ERROR
1001
+ rule: "Major schema version must not exceed supported"
1002
+ check: "parseInt(schema_version.split('.')[0]) <= AGENT_MAX_MAJOR_VERSION"
1003
+
1004
+ - id: REQUIRED_001
1005
+ severity: ERROR
1006
+ rule: "Required fields must be present"
1007
+ fields: [schema_version, title, category, status, last_updated]
1008
+
1009
+ - id: ENUM_001
1010
+ severity: ERROR
1011
+ rule: "Enum fields must use defined values"
1012
+
1013
+ # Recommended field rules
1014
+ - id: RECOMMENDED_001
1015
+ severity: WARNING
1016
+ rule: "Recommended fields should be present"
1017
+ fields: [version, retrieval_priority, retrieval_scope, last_verified, owner]
1018
+
1019
+ - id: DATE_001
1020
+ severity: WARNING
1021
+ rule: "Dates should be valid ISO-8601"
1022
+ check: "date fields match YYYY-MM-DD"
1023
+
1024
+ - id: VERIFIED_001
1025
+ severity: WARNING
1026
+ rule: "Active documents should have recent verification"
1027
+ check: "if status=active, last_verified within 90 days"
1028
+
1029
+ - id: DEPRECATED_001
1030
+ severity: WARNING
1031
+ rule: "Deprecated documents should specify replacement"
1032
+ check: "if status=deprecated, superseded_by should be set"
1033
+
1034
+ # v2.4 specific rules
1035
+ - id: MCP_001
1036
+ severity: INFO
1037
+ rule: "MCP URIs should use valid format"
1038
+ check: "mcp_resource.uri matches ^mcp://[a-z0-9-]+/[a-z0-9-/]+$"
1039
+
1040
+ - id: OASF_001
1041
+ severity: INFO
1042
+ rule: "OASF skills should use category/skill format"
1043
+ check: "oasf_skills items contain '/'"
1044
+
1045
+ - id: CONTEXT_001
1046
+ severity: INFO
1047
+ rule: "Context budget should be consistent"
1048
+ check: "summary_tokens < full_tokens"
1049
+
1050
+ - id: CODEGEN_001
1051
+ severity: INFO
1052
+ rule: "Codegen-safe documents should have high confidence"
1053
+ check: "if safe_for_codegen=true, confidence=high"
1054
+
1055
+ - id: SKILL_001
1056
+ severity: WARNING
1057
+ rule: "Skill documents should include a stable `name` for cross-tool skill loaders (Codex)."
1058
+ check: "if category=skill, name should be set"
1059
+
1060
+
1061
+ # v2.4.3 specific rules
1062
+ - id: SOURCES_001
1063
+ severity: WARNING
1064
+ rule: "Sources entries must have source_id"
1065
+ check: "if sources present, each sources[].source_id matches ^src:"
1066
+
1067
+ - id: RESEARCH_001
1068
+ severity: WARNING
1069
+ rule: "Research reports should declare research.question and at least one source"
1070
+ check: "if category=research-report, research.question set AND sources length >= 1"
1071
+
1072
+ - id: SOURCE_DOC_001
1073
+ severity: INFO
1074
+ rule: "Source documents should include at least one sources entry"
1075
+ check: "if category=source-document, sources length >= 1"
1076
+
1077
+ - id: RAG_001
1078
+ severity: WARNING
1079
+ rule: "Documents containing secrets must not be indexed for RAG"
1080
+ check: "if data_handling.contains_secrets=true, rag.include=false AND data_handling.rag_allowed=false"