cc-codeconductor 1.4.2 → 1.5.1
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.
- package/README.md +52 -14
- package/dist/domain/product/entities.d.ts +1 -1
- package/dist/index.js +811 -354
- package/dist/library.js +47 -3
- package/dist/validation/schemas.d.ts +183 -21
- package/docs/generated/cli.md +16 -0
- package/package.json +1 -1
- package/presets/agy/README.md +1 -1
- package/presets/agy/hooks.json +1 -1
- package/presets/agy/scripts/invoke-hook.cjs +20 -5
- package/presets/agy/settings.json +1 -1
- package/presets/agy/skills/api-versioning/SKILL.md +394 -0
- package/presets/agy/skills/astro/SKILL.md +318 -0
- package/presets/agy/skills/auth-token-inspector/SKILL.md +30 -0
- package/presets/agy/skills/cc-pagespeed/SKILL.md +2 -3
- package/presets/agy/skills/code-review/SKILL.md +207 -0
- package/presets/agy/skills/django-orm/SKILL.md +460 -0
- package/presets/agy/skills/django-uv/SKILL.md +405 -0
- package/presets/agy/skills/drizzle-schema-architect/SKILL.md +50 -0
- package/presets/agy/skills/fastapi-pydantic-strict/SKILL.md +43 -0
- package/presets/agy/skills/jpa-nplusone-detector/SKILL.md +45 -0
- package/presets/agy/skills/jpa-postgres/SKILL.md +623 -0
- package/presets/agy/skills/livewire-alpine-bridge/SKILL.md +35 -0
- package/presets/agy/skills/nextjs-typescript/SKILL.md +390 -0
- package/presets/agy/skills/python/SKILL.md +611 -0
- package/presets/agy/skills/seo-analytics-injector/SKILL.md +43 -0
- package/presets/agy/skills/spring-auth-auditor/SKILL.md +29 -0
- package/presets/agy/skills/spring-boot-feature/SKILL.md +563 -0
- package/presets/agy/skills/spring-boot-testing-strategy/SKILL.md +475 -0
- package/presets/agy/skills/tailwind-responsive-auditor/SKILL.md +29 -0
- package/presets/agy/skills/tdd-mutation-tester/SKILL.md +27 -0
- package/presets/agy/workflows/cc-api-contract.md +4 -5
- package/presets/agy/workflows/cc-backlog.md +4 -5
- package/presets/agy/workflows/cc-clarify.md +4 -5
- package/presets/agy/workflows/cc-council.md +4 -5
- package/presets/agy/workflows/cc-db-migration.md +4 -5
- package/presets/agy/workflows/cc-explore.md +4 -5
- package/presets/agy/workflows/cc-feature.md +4 -5
- package/presets/agy/workflows/cc-fix.md +4 -5
- package/presets/agy/workflows/cc-handoff.md +8 -5
- package/presets/agy/workflows/cc-iterative.md +4 -5
- package/presets/agy/workflows/cc-odd.md +4 -3
- package/presets/agy/workflows/cc-openspec.md +5 -6
- package/presets/agy/workflows/cc-pagespeed.md +6 -8
- package/presets/agy/workflows/cc-prototype.md +4 -5
- package/presets/agy/workflows/cc-refactor.md +4 -5
- package/presets/agy/workflows/cc-review.md +35 -5
- package/presets/agy/workflows/cc-scorecard.md +4 -5
- package/presets/agy/workflows/cc-security.md +5 -6
- package/presets/agy/workflows/cc-spec-mutation.md +4 -5
- package/presets/agy/workflows/cc-tdd-cycle.md +4 -5
- package/presets/agy/workflows/cc-test-plan.md +4 -5
- package/presets/agy/workflows/cc-triage.md +4 -5
- package/presets/claude/CLAUDE.md +6 -5
- package/presets/claude/commands/cc/api-contract.md +4 -5
- package/presets/claude/commands/cc/backlog.md +4 -5
- package/presets/claude/commands/cc/clarify.md +4 -5
- package/presets/claude/commands/cc/council.md +4 -5
- package/presets/claude/commands/cc/db-migration.md +4 -5
- package/presets/claude/commands/cc/explore.md +4 -5
- package/presets/claude/commands/cc/feature.md +4 -5
- package/presets/claude/commands/cc/fix.md +4 -5
- package/presets/claude/commands/cc/handoff.md +8 -5
- package/presets/claude/commands/cc/iterative.md +4 -5
- package/presets/claude/commands/cc/odd.md +4 -3
- package/presets/claude/commands/cc/openspec.md +23 -7
- package/presets/claude/commands/cc/pagespeed.md +4 -5
- package/presets/claude/commands/cc/prototype.md +4 -5
- package/presets/claude/commands/cc/refactor.md +4 -5
- package/presets/claude/commands/cc/review.md +37 -5
- package/presets/claude/commands/cc/scorecard.md +4 -5
- package/presets/claude/commands/cc/security.md +4 -5
- package/presets/claude/commands/cc/spec-mutation.md +4 -5
- package/presets/claude/commands/cc/tdd-cycle.md +4 -5
- package/presets/claude/commands/cc/test-plan.md +4 -5
- package/presets/claude/commands/cc/triage.md +4 -5
- package/presets/claude/settings.json +33 -79
- package/presets/claude/skills/android/SKILL.md +1 -1
- package/presets/claude/skills/api-versioning/SKILL.md +1 -1
- package/presets/claude/skills/astro/SKILL.md +318 -0
- package/presets/claude/skills/auth-token-inspector/SKILL.md +30 -0
- package/presets/claude/skills/code-review/SKILL.md +207 -0
- package/presets/claude/skills/django-orm/SKILL.md +1 -1
- package/presets/claude/skills/django-testing/SKILL.md +1 -1
- package/presets/claude/skills/django-uv/SKILL.md +405 -0
- package/presets/claude/skills/drizzle-schema-architect/SKILL.md +50 -0
- package/presets/claude/skills/fastapi-pydantic-strict/SKILL.md +43 -0
- package/presets/claude/skills/jpa-nplusone-detector/SKILL.md +45 -0
- package/presets/claude/skills/jpa-postgres/SKILL.md +1 -1
- package/presets/claude/skills/livewire-alpine-bridge/SKILL.md +35 -0
- package/presets/claude/skills/nextjs-typescript/SKILL.md +390 -0
- package/presets/claude/skills/pagespeed-perf/SKILL.md +1 -1
- package/presets/claude/skills/python/SKILL.md +1 -1
- package/presets/claude/skills/python-django-stack/SKILL.md +1 -1
- package/presets/claude/skills/python-fastapi-stack/SKILL.md +1 -1
- package/presets/claude/skills/security/SKILL.md +1 -1
- package/presets/claude/skills/seo-analytics-injector/SKILL.md +43 -0
- package/presets/claude/skills/spring-auth-auditor/SKILL.md +29 -0
- package/presets/claude/skills/spring-boot-feature/SKILL.md +1 -1
- package/presets/claude/skills/spring-boot-kotlin/SKILL.md +1 -1
- package/presets/claude/skills/spring-boot-testing-strategy/SKILL.md +475 -0
- package/presets/claude/skills/sqlalchemy/SKILL.md +1 -1
- package/presets/claude/skills/tailwind-responsive-auditor/SKILL.md +29 -0
- package/presets/claude/skills/tdd-mutation-tester/SKILL.md +27 -0
- package/presets/claude/skills/testing-strategy/SKILL.md +1 -1
- package/presets/codex/config.toml +2 -0
- package/presets/codex/skills/android/SKILL.md +1 -1
- package/presets/codex/skills/api-versioning/SKILL.md +1 -1
- package/presets/codex/skills/astro/SKILL.md +318 -0
- package/presets/codex/skills/auth-token-inspector/SKILL.md +30 -0
- package/presets/codex/skills/cc-api-contract/SKILL.md +4 -5
- package/presets/codex/skills/cc-backlog/SKILL.md +4 -5
- package/presets/codex/skills/cc-clarify/SKILL.md +4 -5
- package/presets/codex/skills/cc-council/SKILL.md +10 -5
- package/presets/codex/skills/cc-db-migration/SKILL.md +4 -5
- package/presets/codex/skills/cc-explore/SKILL.md +4 -5
- package/presets/codex/skills/cc-feature/SKILL.md +4 -5
- package/presets/codex/skills/cc-fix/SKILL.md +4 -5
- package/presets/codex/skills/cc-handoff/SKILL.md +8 -5
- package/presets/codex/skills/cc-iterative/SKILL.md +4 -5
- package/presets/codex/skills/cc-odd/SKILL.md +4 -3
- package/presets/codex/skills/cc-openspec/SKILL.md +12 -7
- package/presets/codex/skills/cc-pagespeed/SKILL.md +6 -8
- package/presets/codex/skills/cc-prototype/SKILL.md +4 -5
- package/presets/codex/skills/cc-refactor/SKILL.md +4 -5
- package/presets/codex/skills/cc-review/SKILL.md +35 -5
- package/presets/codex/skills/cc-scorecard/SKILL.md +4 -5
- package/presets/codex/skills/cc-security/SKILL.md +5 -6
- package/presets/codex/skills/cc-spec-mutation/SKILL.md +4 -5
- package/presets/codex/skills/cc-tdd-cycle/SKILL.md +4 -5
- package/presets/codex/skills/cc-test-plan/SKILL.md +4 -5
- package/presets/codex/skills/cc-triage/SKILL.md +4 -5
- package/presets/codex/skills/code-review/SKILL.md +207 -0
- package/presets/codex/skills/django-orm/SKILL.md +1 -1
- package/presets/codex/skills/django-testing/SKILL.md +1 -1
- package/presets/codex/skills/django-uv/SKILL.md +405 -0
- package/presets/codex/skills/drizzle-schema-architect/SKILL.md +50 -0
- package/presets/codex/skills/fastapi-pydantic-strict/SKILL.md +43 -0
- package/presets/codex/skills/jpa-nplusone-detector/SKILL.md +45 -0
- package/presets/codex/skills/jpa-postgres/SKILL.md +1 -1
- package/presets/codex/skills/livewire-alpine-bridge/SKILL.md +35 -0
- package/presets/codex/skills/nextjs-typescript/SKILL.md +390 -0
- package/presets/codex/skills/pagespeed-perf/SKILL.md +1 -1
- package/presets/codex/skills/python/SKILL.md +1 -1
- package/presets/codex/skills/python-django-stack/SKILL.md +1 -1
- package/presets/codex/skills/python-fastapi-stack/SKILL.md +1 -1
- package/presets/codex/skills/security-ai-llm/SKILL.md +43 -0
- package/presets/codex/skills/security-blue-team/SKILL.md +43 -0
- package/presets/codex/skills/security-cloud/SKILL.md +43 -0
- package/presets/codex/skills/security-crypto/SKILL.md +43 -0
- package/presets/codex/skills/security-exploit-dev/SKILL.md +45 -0
- package/presets/codex/skills/security-grc/SKILL.md +43 -0
- package/presets/codex/skills/security-incident-response/SKILL.md +45 -0
- package/presets/codex/skills/security-log-analysis/SKILL.md +43 -0
- package/presets/codex/skills/security-malware-analysis/SKILL.md +44 -0
- package/presets/codex/skills/security-mobile/SKILL.md +43 -0
- package/presets/codex/skills/security-network/SKILL.md +43 -0
- package/presets/codex/skills/security-ot-ics/SKILL.md +43 -0
- package/presets/codex/skills/security-recon/SKILL.md +45 -0
- package/presets/codex/skills/security-red-team/SKILL.md +44 -0
- package/presets/codex/skills/security-reverse-engineering/SKILL.md +44 -0
- package/presets/codex/skills/security-soc-automation/SKILL.md +43 -0
- package/presets/codex/skills/security-threat-hunting/SKILL.md +43 -0
- package/presets/codex/skills/security-vuln-assessment/SKILL.md +45 -0
- package/presets/codex/skills/security-web/SKILL.md +44 -0
- package/presets/codex/skills/seo-analytics-injector/SKILL.md +43 -0
- package/presets/codex/skills/spring-auth-auditor/SKILL.md +29 -0
- package/presets/codex/skills/spring-boot-feature/SKILL.md +2 -2
- package/presets/codex/skills/spring-boot-kotlin/SKILL.md +1 -1
- package/presets/codex/skills/spring-boot-testing-strategy/SKILL.md +475 -0
- package/presets/codex/skills/sqlalchemy/SKILL.md +1 -1
- package/presets/codex/skills/tailwind-responsive-auditor/SKILL.md +29 -0
- package/presets/codex/skills/tdd-mutation-tester/SKILL.md +27 -0
- package/presets/codex/skills/testing-strategy/SKILL.md +1 -1
- package/presets/cursor/commands/cc/api-contract.md +4 -5
- package/presets/cursor/commands/cc/backlog.md +4 -5
- package/presets/cursor/commands/cc/clarify.md +4 -5
- package/presets/cursor/commands/cc/council.md +4 -5
- package/presets/cursor/commands/cc/db-migration.md +4 -5
- package/presets/cursor/commands/cc/explore.md +4 -5
- package/presets/cursor/commands/cc/feature.md +4 -5
- package/presets/cursor/commands/cc/fix.md +4 -5
- package/presets/cursor/commands/cc/handoff.md +8 -5
- package/presets/cursor/commands/cc/iterative.md +4 -5
- package/presets/cursor/commands/cc/odd.md +4 -3
- package/presets/cursor/commands/cc/openspec.md +6 -7
- package/presets/cursor/commands/cc/pagespeed.md +6 -8
- package/presets/cursor/commands/cc/prototype.md +4 -5
- package/presets/cursor/commands/cc/refactor.md +4 -5
- package/presets/cursor/commands/cc/review.md +35 -5
- package/presets/cursor/commands/cc/scorecard.md +4 -5
- package/presets/cursor/commands/cc/security.md +5 -6
- package/presets/cursor/commands/cc/spec-mutation.md +4 -5
- package/presets/cursor/commands/cc/tdd-cycle.md +4 -5
- package/presets/cursor/commands/cc/test-plan.md +4 -5
- package/presets/cursor/commands/cc/triage.md +4 -5
- package/presets/cursor/skills/android/SKILL.md +1 -1
- package/presets/cursor/skills/api-versioning/SKILL.md +2 -1
- package/presets/cursor/skills/astro/SKILL.md +1 -1
- package/presets/cursor/skills/auth-token-inspector/SKILL.md +1 -1
- package/presets/cursor/skills/code-review/SKILL.md +1 -1
- package/presets/cursor/skills/django-orm/SKILL.md +3 -5
- package/presets/cursor/skills/django-testing/SKILL.md +1 -1
- package/presets/cursor/skills/django-uv/SKILL.md +1 -1
- package/presets/cursor/skills/drizzle-schema-architect/SKILL.md +1 -1
- package/presets/cursor/skills/fastapi-pydantic-strict/SKILL.md +1 -1
- package/presets/cursor/skills/jpa-nplusone-detector/SKILL.md +1 -1
- package/presets/cursor/skills/jpa-postgres/SKILL.md +2 -4
- package/presets/cursor/skills/livewire-alpine-bridge/SKILL.md +1 -1
- package/presets/cursor/skills/nextjs-typescript/SKILL.md +1 -1
- package/presets/cursor/skills/pagespeed-perf/SKILL.md +1 -1
- package/presets/cursor/skills/python/SKILL.md +6 -7
- package/presets/cursor/skills/python-django-stack/SKILL.md +1 -1
- package/presets/cursor/skills/python-fastapi-stack/SKILL.md +1 -1
- package/presets/cursor/skills/security/SKILL.md +1 -1
- package/presets/cursor/skills/seo-analytics-injector/SKILL.md +1 -1
- package/presets/cursor/skills/spring-auth-auditor/SKILL.md +1 -1
- package/presets/cursor/skills/spring-boot-feature/SKILL.md +2 -4
- package/presets/cursor/skills/spring-boot-kotlin/SKILL.md +1 -1
- package/presets/cursor/skills/spring-boot-testing-strategy/SKILL.md +1 -1
- package/presets/cursor/skills/sqlalchemy/SKILL.md +1 -1
- package/presets/cursor/skills/tailwind-responsive-auditor/SKILL.md +1 -1
- package/presets/cursor/skills/tdd-mutation-tester/SKILL.md +1 -1
- package/presets/gemini/commands/cc/api-contract.toml +4 -5
- package/presets/gemini/commands/cc/backlog.toml +4 -5
- package/presets/gemini/commands/cc/clarify.toml +4 -5
- package/presets/gemini/commands/cc/council.toml +4 -5
- package/presets/gemini/commands/cc/db-migration.toml +4 -5
- package/presets/gemini/commands/cc/explore.toml +4 -5
- package/presets/gemini/commands/cc/feature.toml +4 -5
- package/presets/gemini/commands/cc/fix.toml +4 -5
- package/presets/gemini/commands/cc/handoff.toml +8 -5
- package/presets/gemini/commands/cc/iterative.toml +4 -5
- package/presets/gemini/commands/cc/odd.toml +4 -3
- package/presets/gemini/commands/cc/openspec.toml +6 -7
- package/presets/gemini/commands/cc/pagespeed.toml +6 -8
- package/presets/gemini/commands/cc/prototype.toml +4 -5
- package/presets/gemini/commands/cc/refactor.toml +4 -5
- package/presets/gemini/commands/cc/review.toml +35 -5
- package/presets/gemini/commands/cc/scorecard.toml +4 -5
- package/presets/gemini/commands/cc/security.toml +5 -6
- package/presets/gemini/commands/cc/spec-mutation.toml +4 -5
- package/presets/gemini/commands/cc/tdd-cycle.toml +4 -5
- package/presets/gemini/commands/cc/test-plan.toml +4 -5
- package/presets/gemini/commands/cc/triage.toml +4 -5
- package/presets/opencode/README.md +45 -52
- package/presets/opencode/commands/cc-api-contract.md +4 -5
- package/presets/opencode/commands/cc-backlog.md +4 -5
- package/presets/opencode/commands/cc-clarify.md +4 -5
- package/presets/opencode/commands/cc-council.md +4 -5
- package/presets/opencode/commands/cc-db-migration.md +4 -5
- package/presets/opencode/commands/cc-explore.md +4 -5
- package/presets/opencode/commands/cc-feature.md +4 -5
- package/presets/opencode/commands/cc-fix.md +4 -5
- package/presets/opencode/commands/cc-handoff.md +8 -5
- package/presets/opencode/commands/cc-iterative.md +4 -5
- package/presets/opencode/commands/cc-odd.md +4 -3
- package/presets/opencode/commands/cc-openspec.md +6 -7
- package/presets/opencode/commands/cc-pagespeed.md +6 -8
- package/presets/opencode/commands/cc-prototype.md +4 -5
- package/presets/opencode/commands/cc-refactor.md +4 -5
- package/presets/opencode/commands/cc-review.md +35 -5
- package/presets/opencode/commands/cc-scorecard.md +4 -5
- package/presets/opencode/commands/cc-security.md +5 -6
- package/presets/opencode/commands/cc-spec-mutation.md +4 -5
- package/presets/opencode/commands/cc-tdd-cycle.md +4 -5
- package/presets/opencode/commands/cc-test-plan.md +4 -5
- package/presets/opencode/commands/cc-triage.md +4 -5
- package/presets/opencode/opencode.jsonc +1 -1
- package/presets/opencode/skills/android/SKILL.md +1 -1
- package/presets/opencode/skills/api-versioning/SKILL.md +2 -1
- package/presets/opencode/skills/astro/SKILL.md +1 -1
- package/presets/opencode/skills/auth-token-inspector/SKILL.md +1 -1
- package/presets/opencode/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/skills/django-orm/SKILL.md +3 -3
- package/presets/opencode/skills/django-testing/SKILL.md +1 -1
- package/presets/opencode/skills/django-uv/SKILL.md +1 -1
- package/presets/opencode/skills/drizzle-schema-architect/SKILL.md +1 -1
- package/presets/opencode/skills/fastapi-pydantic-strict/SKILL.md +1 -1
- package/presets/opencode/skills/jpa-nplusone-detector/SKILL.md +1 -1
- package/presets/opencode/skills/jpa-postgres/SKILL.md +2 -1
- package/presets/opencode/skills/livewire-alpine-bridge/SKILL.md +1 -1
- package/presets/opencode/skills/nextjs-typescript/SKILL.md +1 -1
- package/presets/opencode/skills/pagespeed-perf/SKILL.md +1 -1
- package/presets/opencode/skills/python/SKILL.md +6 -5
- package/presets/opencode/skills/python-django-stack/SKILL.md +1 -1
- package/presets/opencode/skills/python-fastapi-stack/SKILL.md +1 -1
- package/presets/opencode/skills/security/SKILL.md +1 -1
- package/presets/opencode/skills/seo-analytics-injector/SKILL.md +1 -1
- package/presets/opencode/skills/spring-auth-auditor/SKILL.md +1 -1
- package/presets/opencode/skills/spring-boot-feature/SKILL.md +2 -1
- package/presets/opencode/skills/spring-boot-kotlin/SKILL.md +1 -1
- package/presets/opencode/skills/spring-boot-testing-strategy/SKILL.md +1 -1
- package/presets/opencode/skills/sqlalchemy/SKILL.md +1 -1
- package/presets/opencode/skills/tailwind-responsive-auditor/SKILL.md +1 -1
- package/presets/opencode/skills/tdd-mutation-tester/SKILL.md +1 -1
- package/presets/seo-hotel/skills/astro-seo/SKILL.md +1 -1
- package/presets/seo-hotel/skills/geo-readiness/SKILL.md +1 -1
- package/presets/seo-hotel/skills/off-page/SKILL.md +1 -1
- package/presets/seo-hotel/skills/schema-validator/SKILL.md +1 -1
- package/presets/seo-hotel/skills/seo-audit/SKILL.md +1 -1
- package/presets/shared/invoke-hook.cjs +20 -5
- package/src/presets/manifests/codex.yml +3 -0
- package/src/presets/models/roles.yml +54 -56
- package/src/presets/shared-skills.yml +58 -22
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: astro
|
|
3
|
+
name: astro
|
|
4
|
+
description: >
|
|
5
|
+
Provides expert knowledge for building Astro 5+ sites with Islands Architecture, Content Collections, TypeScript, and performance-first rendering strategies.
|
|
6
|
+
|
|
7
|
+
user-invokable: true
|
|
8
|
+
license: MIT
|
|
9
|
+
metadata:
|
|
10
|
+
author: lgzarturo
|
|
11
|
+
category: frontend
|
|
12
|
+
|
|
13
|
+
compatibility:
|
|
14
|
+
tools: [claude, codex, gemini, agy, opencode]
|
|
15
|
+
stacks:
|
|
16
|
+
languages: []
|
|
17
|
+
frameworks: []
|
|
18
|
+
|
|
19
|
+
risk:
|
|
20
|
+
level: low
|
|
21
|
+
can_execute_shell: false
|
|
22
|
+
can_modify_files: true
|
|
23
|
+
requires_network: false
|
|
24
|
+
|
|
25
|
+
inputs: []
|
|
26
|
+
|
|
27
|
+
outputs: []
|
|
28
|
+
|
|
29
|
+
quality:
|
|
30
|
+
reviewed_by: codeconductor-core
|
|
31
|
+
version: 0.1.0
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Astro
|
|
37
|
+
|
|
38
|
+
## Islands Architecture
|
|
39
|
+
|
|
40
|
+
Astro renders everything to static HTML by default. JavaScript ships only for
|
|
41
|
+
components that explicitly opt in — these are called Islands.
|
|
42
|
+
|
|
43
|
+
### Hydration Directives
|
|
44
|
+
|
|
45
|
+
| Directive | When JS loads | Use case |
|
|
46
|
+
|-----------|--------------|----------|
|
|
47
|
+
| `client:load` | On page load | Interactive above-the-fold UI |
|
|
48
|
+
| `client:idle` | When browser is idle | Non-critical interactive widgets |
|
|
49
|
+
| `client:visible` | When element enters viewport | Below-the-fold islands |
|
|
50
|
+
| `client:media` | When CSS media query matches | Responsive interactive components |
|
|
51
|
+
| `client:only` | Client-only, no SSR | Components that require the DOM (e.g., charting libs) |
|
|
52
|
+
|
|
53
|
+
```astro
|
|
54
|
+
---
|
|
55
|
+
import Counter from '../components/Counter.tsx';
|
|
56
|
+
import HeavyChart from '../components/HeavyChart.tsx';
|
|
57
|
+
import MobileNav from '../components/MobileNav.tsx';
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
<!-- Hydrates immediately — user interacts right away -->
|
|
61
|
+
<Counter client:load />
|
|
62
|
+
|
|
63
|
+
<!-- Hydrates when scrolled into view — saves initial JS -->
|
|
64
|
+
<HeavyChart client:visible />
|
|
65
|
+
|
|
66
|
+
<!-- Only on mobile, only when query matches -->
|
|
67
|
+
<MobileNav client:media="(max-width: 768px)" />
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Rules:
|
|
71
|
+
|
|
72
|
+
- Default to no hydration directive — most UI does not need JavaScript
|
|
73
|
+
- `client:load` is the most expensive directive; use it sparingly
|
|
74
|
+
- `client:only` skips server rendering entirely — the component receives no
|
|
75
|
+
props from the server; pass all data via props or fetch inside the component
|
|
76
|
+
- Do not use `client:load` for components that could use `client:visible`
|
|
77
|
+
|
|
78
|
+
### Framework Components Inside Astro
|
|
79
|
+
|
|
80
|
+
```astro
|
|
81
|
+
---
|
|
82
|
+
import ReactButton from './Button.tsx'; // React island
|
|
83
|
+
import VueWidget from './Widget.vue'; // Vue island
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<!-- Both can coexist on the same page -->
|
|
87
|
+
<ReactButton client:idle label="Click me" />
|
|
88
|
+
<VueWidget client:visible />
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Each framework ships its own runtime only when at least one island of that
|
|
92
|
+
framework is on the page.
|
|
93
|
+
|
|
94
|
+
## Content Collections
|
|
95
|
+
|
|
96
|
+
Content Collections provide type-safe access to Markdown, MDX, and data files.
|
|
97
|
+
Define schemas in `src/content/config.ts`.
|
|
98
|
+
|
|
99
|
+
### Schema Definition
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// src/content/config.ts
|
|
103
|
+
import { defineCollection, z } from 'astro:content';
|
|
104
|
+
|
|
105
|
+
const blog = defineCollection({
|
|
106
|
+
type: 'content', // .md or .mdx files
|
|
107
|
+
schema: z.object({
|
|
108
|
+
title: z.string(),
|
|
109
|
+
description: z.string(),
|
|
110
|
+
pubDate: z.coerce.date(),
|
|
111
|
+
updatedDate: z.coerce.date().optional(),
|
|
112
|
+
author: z.string().default('Anonymous'),
|
|
113
|
+
tags: z.array(z.string()).default([]),
|
|
114
|
+
draft: z.boolean().default(false),
|
|
115
|
+
image: z.object({
|
|
116
|
+
src: z.string(),
|
|
117
|
+
alt: z.string(),
|
|
118
|
+
}).optional(),
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const docs = defineCollection({
|
|
123
|
+
type: 'content',
|
|
124
|
+
schema: z.object({
|
|
125
|
+
title: z.string(),
|
|
126
|
+
order: z.number(),
|
|
127
|
+
section: z.enum(['guide', 'reference', 'tutorial']),
|
|
128
|
+
}),
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
export const collections = { blog, docs };
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Querying Collections
|
|
135
|
+
|
|
136
|
+
```astro
|
|
137
|
+
---
|
|
138
|
+
import { getCollection, getEntry } from 'astro:content';
|
|
139
|
+
|
|
140
|
+
// All published posts, sorted by date
|
|
141
|
+
const posts = (await getCollection('blog', ({ data }) => !data.draft))
|
|
142
|
+
.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
|
|
143
|
+
|
|
144
|
+
// Single entry by slug
|
|
145
|
+
const post = await getEntry('blog', 'my-first-post');
|
|
146
|
+
const { Content } = await post.render();
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
{posts.map(post => (
|
|
150
|
+
<article>
|
|
151
|
+
<h2><a href={`/blog/${post.slug}`}>{post.data.title}</a></h2>
|
|
152
|
+
<time>{post.data.pubDate.toLocaleDateString()}</time>
|
|
153
|
+
</article>
|
|
154
|
+
))}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Dynamic Routes from Collections
|
|
158
|
+
|
|
159
|
+
```astro
|
|
160
|
+
---
|
|
161
|
+
// src/pages/blog/[slug].astro
|
|
162
|
+
import { getCollection } from 'astro:content';
|
|
163
|
+
|
|
164
|
+
export async function getStaticPaths() {
|
|
165
|
+
const posts = await getCollection('blog');
|
|
166
|
+
return posts.map(post => ({
|
|
167
|
+
params: { slug: post.slug },
|
|
168
|
+
props: { post },
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const { post } = Astro.props;
|
|
173
|
+
const { Content, headings } = await post.render();
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
<article>
|
|
177
|
+
<h1>{post.data.title}</h1>
|
|
178
|
+
<Content />
|
|
179
|
+
</article>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Rendering Strategies
|
|
183
|
+
|
|
184
|
+
### SSG (Static Site Generation) — default
|
|
185
|
+
|
|
186
|
+
Every page is pre-rendered at build time. Best for content that does not change
|
|
187
|
+
per request.
|
|
188
|
+
|
|
189
|
+
```javascript
|
|
190
|
+
// astro.config.mjs — no output config needed; SSG is the default
|
|
191
|
+
export default defineConfig({
|
|
192
|
+
site: 'https://example.com',
|
|
193
|
+
});
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### SSR (Server-Side Rendering)
|
|
197
|
+
|
|
198
|
+
Renders pages on each request. Required for: authenticated routes, personalized
|
|
199
|
+
content, live data.
|
|
200
|
+
|
|
201
|
+
```javascript
|
|
202
|
+
// astro.config.mjs
|
|
203
|
+
import node from '@astrojs/node';
|
|
204
|
+
|
|
205
|
+
export default defineConfig({
|
|
206
|
+
output: 'server',
|
|
207
|
+
adapter: node({ mode: 'standalone' }),
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Hybrid Mode
|
|
212
|
+
|
|
213
|
+
Mix SSG and SSR on a per-page basis. Most pages are static; specific routes opt
|
|
214
|
+
into server rendering.
|
|
215
|
+
|
|
216
|
+
```javascript
|
|
217
|
+
// astro.config.mjs
|
|
218
|
+
export default defineConfig({
|
|
219
|
+
output: 'hybrid',
|
|
220
|
+
adapter: node({ mode: 'standalone' }),
|
|
221
|
+
});
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```astro
|
|
225
|
+
---
|
|
226
|
+
// src/pages/dashboard.astro — this page is server-rendered
|
|
227
|
+
export const prerender = false;
|
|
228
|
+
|
|
229
|
+
// src/pages/about.astro — this page is statically generated (hybrid default)
|
|
230
|
+
export const prerender = true;
|
|
231
|
+
---
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Use hybrid mode when: most content is static but a few routes need auth or
|
|
235
|
+
live data. Do not make everything `output: 'server'` — you lose the performance
|
|
236
|
+
benefits of static generation.
|
|
237
|
+
|
|
238
|
+
## Image Optimization
|
|
239
|
+
|
|
240
|
+
Use the built-in `<Image>` and `<Picture>` components. Never use raw `<img>`
|
|
241
|
+
for local assets — you lose automatic optimization.
|
|
242
|
+
|
|
243
|
+
```astro
|
|
244
|
+
---
|
|
245
|
+
import { Image, Picture } from 'astro:assets';
|
|
246
|
+
import heroImage from '../assets/hero.png';
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
<!-- Optimized single image -->
|
|
250
|
+
<Image
|
|
251
|
+
src={heroImage}
|
|
252
|
+
alt="Hero illustration"
|
|
253
|
+
width={800}
|
|
254
|
+
height={600}
|
|
255
|
+
format="webp"
|
|
256
|
+
quality={80}
|
|
257
|
+
/>
|
|
258
|
+
|
|
259
|
+
<!-- Responsive with multiple formats -->
|
|
260
|
+
<Picture
|
|
261
|
+
src={heroImage}
|
|
262
|
+
formats={['avif', 'webp']}
|
|
263
|
+
alt="Hero illustration"
|
|
264
|
+
widths={[400, 800, 1200]}
|
|
265
|
+
sizes="(max-width: 800px) 100vw, 800px"
|
|
266
|
+
/>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Rules:
|
|
270
|
+
|
|
271
|
+
- Always provide `alt` — empty string is acceptable only for decorative images
|
|
272
|
+
- Prefer `avif` + `webp` fallback for best compression
|
|
273
|
+
- Use `widths` + `sizes` on above-the-fold images to serve the right size per
|
|
274
|
+
viewport
|
|
275
|
+
- Remote images require explicit `width` and `height` to prevent layout shift
|
|
276
|
+
|
|
277
|
+
## Project Structure
|
|
278
|
+
|
|
279
|
+
```text
|
|
280
|
+
src/
|
|
281
|
+
assets/ — images and static assets processed by Astro
|
|
282
|
+
components/ — .astro components (and framework islands)
|
|
283
|
+
content/
|
|
284
|
+
blog/ — .md and .mdx files
|
|
285
|
+
config.ts — collection schemas
|
|
286
|
+
layouts/ — page shell layouts
|
|
287
|
+
pages/ — file-based routing; every file is a route
|
|
288
|
+
styles/ — global CSS
|
|
289
|
+
astro.config.mjs
|
|
290
|
+
tsconfig.json
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Colocation rule: put framework island components (`.tsx`, `.vue`) in
|
|
294
|
+
`src/components/`. Do not scatter them in `src/pages/`.
|
|
295
|
+
|
|
296
|
+
## TypeScript Conventions
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
// tsconfig.json — use the strict Astro preset
|
|
300
|
+
{
|
|
301
|
+
"extends": "astro/tsconfigs/strict"
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
```astro
|
|
306
|
+
---
|
|
307
|
+
// Type props explicitly in the frontmatter
|
|
308
|
+
interface Props {
|
|
309
|
+
title: string;
|
|
310
|
+
description?: string;
|
|
311
|
+
tags: string[];
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
const { title, description = '', tags } = Astro.props;
|
|
315
|
+
---
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Astro infers prop types from `interface Props` automatically. Do not use `any`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: auth-token-inspector
|
|
3
|
+
name: auth-token-inspector
|
|
4
|
+
description: >
|
|
5
|
+
Audits token storage mechanisms to prevent XSS-based JWT theft.
|
|
6
|
+
user-invokable: true
|
|
7
|
+
license: MIT
|
|
8
|
+
metadata:
|
|
9
|
+
author: lgzarturo
|
|
10
|
+
category: security
|
|
11
|
+
compatibility:
|
|
12
|
+
tools: [claude, codex, gemini, agy, opencode]
|
|
13
|
+
stacks:
|
|
14
|
+
languages: [typescript, javascript, python, kotlin, java, php]
|
|
15
|
+
---
|
|
16
|
+
# Auth Token Inspector
|
|
17
|
+
|
|
18
|
+
## Core Principles
|
|
19
|
+
|
|
20
|
+
1. **Secure Storage**: JWTs or session tokens must NOT be stored in `localStorage` or `sessionStorage` due to vulnerability to Cross-Site Scripting (XSS).
|
|
21
|
+
2. **HttpOnly Cookies**: Deliver tokens via `HttpOnly`, `Secure`, and `SameSite=Strict` (or `Lax`) cookies to protect them from client-side JS access.
|
|
22
|
+
3. **Short Expiration**: Ensure access tokens have short expiration times, and implement secure, rotation-enabled refresh tokens stored in cookies.
|
|
23
|
+
|
|
24
|
+
## Storage Comparison
|
|
25
|
+
|
|
26
|
+
| Storage Mode | Vulnerable to XSS | Vulnerable to CSRF | Recommended |
|
|
27
|
+
| :--- | :--- | :--- | :--- |
|
|
28
|
+
| **localStorage** | Yes (High Risk) | No | **NO** |
|
|
29
|
+
| **sessionStorage** | Yes (High Risk) | No | **NO** |
|
|
30
|
+
| **HttpOnly Cookie** | No (Secure) | Yes (Mitigated via SameSite/Tokens) | **YES** |
|
|
@@ -15,11 +15,10 @@ API contract request: $ARGUMENTS
|
|
|
15
15
|
|
|
16
16
|
Command: `api-contract` (fixed for this workflow — do not infer from user text)
|
|
17
17
|
|
|
18
|
-
1. Run: `npx cc-codeconductor ccep
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
+
1. Run: `npx cc-codeconductor ccep profile api-contract --output json` to get the phases and their roles.
|
|
19
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command api-contract --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
20
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command api-contract --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
21
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
23
22
|
|
|
24
23
|
---
|
|
25
24
|
|
|
@@ -20,11 +20,10 @@ deliver implementation — that is `/cc-openspec`.
|
|
|
20
20
|
|
|
21
21
|
Command: `backlog` (fixed for this workflow — do not infer from user text)
|
|
22
22
|
|
|
23
|
-
1. Run: `npx cc-codeconductor ccep
|
|
24
|
-
2.
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
23
|
+
1. Run: `npx cc-codeconductor ccep profile backlog --output json` to get the phases and their roles.
|
|
24
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command backlog --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
25
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command backlog --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
26
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
28
27
|
|
|
29
28
|
---
|
|
30
29
|
|
|
@@ -15,11 +15,10 @@ Clarify request: $ARGUMENTS
|
|
|
15
15
|
|
|
16
16
|
Command: `clarify` (fixed for this workflow — do not infer from user text)
|
|
17
17
|
|
|
18
|
-
1. Run: `npx cc-codeconductor ccep
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
+
1. Run: `npx cc-codeconductor ccep profile clarify --output json` to get the phases and their roles.
|
|
19
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command clarify --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
20
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command clarify --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
21
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
23
22
|
|
|
24
23
|
---
|
|
25
24
|
|
|
@@ -7,6 +7,12 @@ description: Council-driven workflow with CCEP-1 bootstrap
|
|
|
7
7
|
|
|
8
8
|
Invoke as `$cc-council`. The user request follows the skill mention.
|
|
9
9
|
|
|
10
|
+
## Council context budget
|
|
11
|
+
|
|
12
|
+
Use GPT-6.1 Sol with medium reasoning effort. Give each necessary council role
|
|
13
|
+
the same short evidence summary and relevant diff. Reuse those findings in the
|
|
14
|
+
verdict; avoid spawning roles for questions already answered by evidence.
|
|
15
|
+
|
|
10
16
|
# Council-Driven Workflow
|
|
11
17
|
|
|
12
18
|
Task request: $ARGUMENTS
|
|
@@ -16,11 +22,10 @@ Task request: $ARGUMENTS
|
|
|
16
22
|
Command: `council` (fixed for this workflow — do not infer from user text)
|
|
17
23
|
command: council
|
|
18
24
|
|
|
19
|
-
1. Run: `npx cc-codeconductor ccep
|
|
20
|
-
2.
|
|
21
|
-
3.
|
|
22
|
-
4.
|
|
23
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
25
|
+
1. Run: `npx cc-codeconductor ccep profile council --output json` to get the phases and their roles.
|
|
26
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command council --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
27
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command council --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
28
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
24
29
|
|
|
25
30
|
---
|
|
26
31
|
|
|
@@ -15,11 +15,10 @@ Migration request: $ARGUMENTS
|
|
|
15
15
|
|
|
16
16
|
Command: `db-migration` (fixed for this workflow — do not infer from user text)
|
|
17
17
|
|
|
18
|
-
1. Run: `npx cc-codeconductor ccep
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
+
1. Run: `npx cc-codeconductor ccep profile db-migration --output json` to get the phases and their roles.
|
|
19
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command db-migration --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
20
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command db-migration --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
21
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
23
22
|
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
24
23
|
|
|
25
24
|
---
|
|
@@ -15,11 +15,10 @@ Explore request: $ARGUMENTS
|
|
|
15
15
|
|
|
16
16
|
Command: `explore` (fixed for this workflow — do not infer from user text)
|
|
17
17
|
|
|
18
|
-
1. Run: `npx cc-codeconductor ccep
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
+
1. Run: `npx cc-codeconductor ccep profile explore --output json` to get the phases and their roles.
|
|
19
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command explore --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
20
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command explore --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
21
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
23
22
|
|
|
24
23
|
---
|
|
25
24
|
|
|
@@ -39,11 +39,10 @@ unavailable visual or emulator checks remain pending rather than claimed complet
|
|
|
39
39
|
|
|
40
40
|
Command: `feature` (fixed for this workflow — do not infer from user text)
|
|
41
41
|
|
|
42
|
-
1. Run: `npx cc-codeconductor ccep
|
|
43
|
-
2.
|
|
44
|
-
3.
|
|
45
|
-
4.
|
|
46
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
42
|
+
1. Run: `npx cc-codeconductor ccep profile feature --output json` to get the phases and their roles.
|
|
43
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command feature --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
44
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command feature --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
45
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
47
46
|
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
48
47
|
|
|
49
48
|
---
|
|
@@ -47,11 +47,10 @@ unavailable visual or emulator checks remain pending rather than claimed complet
|
|
|
47
47
|
|
|
48
48
|
Command: `fix` (fixed for this workflow — do not infer from user text)
|
|
49
49
|
|
|
50
|
-
1. Run: `npx cc-codeconductor ccep
|
|
51
|
-
2.
|
|
52
|
-
3.
|
|
53
|
-
4.
|
|
54
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
50
|
+
1. Run: `npx cc-codeconductor ccep profile fix --output json` to get the phases and their roles.
|
|
51
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command fix --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
52
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command fix --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
53
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
55
54
|
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
56
55
|
|
|
57
56
|
---
|
|
@@ -15,11 +15,10 @@ Handoff request: $ARGUMENTS
|
|
|
15
15
|
|
|
16
16
|
Command: `handoff` (fixed for this workflow — do not infer from user text)
|
|
17
17
|
|
|
18
|
-
1. Run: `npx cc-codeconductor ccep
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
18
|
+
1. Run: `npx cc-codeconductor ccep profile handoff --output json` to get the phases and their roles.
|
|
19
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command handoff --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
20
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command handoff --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
21
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
23
22
|
|
|
24
23
|
---
|
|
25
24
|
|
|
@@ -38,6 +37,10 @@ pass/fail (not log dumps), open questions, the next `$cc-` command, plus links
|
|
|
38
37
|
to the Delivery Ledger and verification evidence when they exist. Do not repeat
|
|
39
38
|
the original request or transcript.
|
|
40
39
|
|
|
40
|
+
If a Delivery Ledger exists, run `npx cc-codeconductor odd handoff --id <ledger-id> --output json`
|
|
41
|
+
and use its `handoff` envelope as the source for these fields. Secret redaction
|
|
42
|
+
still applies.
|
|
43
|
+
|
|
41
44
|
Do not edit source or tests.
|
|
42
45
|
|
|
43
46
|
---
|
|
@@ -17,11 +17,10 @@ Iterative request: $ARGUMENTS
|
|
|
17
17
|
|
|
18
18
|
Command: `iterative` (fixed for this workflow — do not infer from user text)
|
|
19
19
|
|
|
20
|
-
1. Run: `npx cc-codeconductor ccep
|
|
21
|
-
2.
|
|
22
|
-
3.
|
|
23
|
-
4.
|
|
24
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
20
|
+
1. Run: `npx cc-codeconductor ccep profile iterative --output json` to get the phases and their roles.
|
|
21
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command iterative --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
22
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command iterative --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
23
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
25
24
|
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
26
25
|
|
|
27
26
|
---
|
|
@@ -12,11 +12,12 @@ Invoke as `$cc-odd`. The user request follows the skill mention.
|
|
|
12
12
|
## Step 0 — CCEP Bootstrap
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun run dev ccep
|
|
16
|
-
bun run dev ccep
|
|
17
|
-
bun run dev ccep profile --command odd
|
|
15
|
+
bun run dev ccep profile odd --output json
|
|
16
|
+
bun run dev ccep compile --command odd --phase <phase-id> "$ARGUMENTS" --view prompt --output json
|
|
18
17
|
```
|
|
19
18
|
|
|
19
|
+
Pass each subagent only the compiled `prompt` for its phase.
|
|
20
|
+
|
|
20
21
|
Create a ledger only after authorization and tracked coordination. Read-only and small work do not create state.
|
|
21
22
|
|
|
22
23
|
When ODD has verification evidence, include its RDD receipt in the ledger
|
|
@@ -7,6 +7,12 @@ description: Run OpenSpec backlog delivery — validate BACKLOG.md, plan TaskCar
|
|
|
7
7
|
|
|
8
8
|
Invoke as `$cc-openspec`. The user request follows the skill mention.
|
|
9
9
|
|
|
10
|
+
## Model and context budget
|
|
11
|
+
|
|
12
|
+
Use GPT-6.1 Sol with medium reasoning effort for every OpenSpec phase. Pass each
|
|
13
|
+
role only its current TaskCard, relevant file paths, acceptance criteria, and a
|
|
14
|
+
short handoff. Avoid replaying the full transcript or re-reading large files.
|
|
15
|
+
|
|
10
16
|
# OpenSpec Backlog Workflow
|
|
11
17
|
|
|
12
18
|
Scope: $ARGUMENTS
|
|
@@ -43,11 +49,10 @@ unavailable visual or emulator checks remain pending rather than claimed complet
|
|
|
43
49
|
|
|
44
50
|
Command: `openspec` (fixed for this workflow — do not infer from user text)
|
|
45
51
|
|
|
46
|
-
1. Run: `npx cc-codeconductor ccep
|
|
47
|
-
2.
|
|
48
|
-
3.
|
|
49
|
-
4.
|
|
50
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
52
|
+
1. Run: `npx cc-codeconductor ccep profile openspec --output json` to get the phases and their roles.
|
|
53
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command openspec --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
54
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command openspec --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
55
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
51
56
|
Canonical delivery order is test-before-implement whenever both phases apply.
|
|
52
57
|
|
|
53
58
|
---
|
|
@@ -158,7 +163,7 @@ For each pending TaskCard, run:
|
|
|
158
163
|
npx cc-codeconductor openspec next
|
|
159
164
|
```
|
|
160
165
|
|
|
161
|
-
Invoke the agent named on the card with **isolated** context (`/clear`
|
|
166
|
+
Invoke the agent named on the card as a subagent with **isolated** context (subagents already start fresh; do not `/clear` the main session between phases):
|
|
162
167
|
|
|
163
168
|
| Phase | Agent | Role |
|
|
164
169
|
|-------|-------|------|
|
|
@@ -214,4 +219,4 @@ Report completion: Task Cards executed, scorecard verdict, change folder path, f
|
|
|
214
219
|
|
|
215
220
|
## Skill
|
|
216
221
|
|
|
217
|
-
Apply `.
|
|
222
|
+
Apply `.codex/skills/openspec/SKILL.md` for backlog format rules and state transitions.
|
|
@@ -17,11 +17,10 @@ Produces a prioritized report in the current working directory.
|
|
|
17
17
|
|
|
18
18
|
Command: `pagespeed` (fixed for this workflow — do not infer from user text)
|
|
19
19
|
|
|
20
|
-
1. Run: `npx cc-codeconductor ccep
|
|
21
|
-
2.
|
|
22
|
-
3.
|
|
23
|
-
4.
|
|
24
|
-
5. Delegate to subagents using compiled CCEP prompts — never forward raw `$ARGUMENTS` to planners.
|
|
20
|
+
1. Run: `npx cc-codeconductor ccep profile pagespeed --output json` to get the phases and their roles.
|
|
21
|
+
2. For each delegated phase, run: `npx cc-codeconductor ccep compile --command pagespeed --phase <phase-id> "$ARGUMENTS" --view prompt --output json`
|
|
22
|
+
3. After planner/intake JSON is available, run: `npx cc-codeconductor ccep evaluate --command pagespeed --input <planner.json> --output json`. If `stop` is true, show questions or risks and wait for human input.
|
|
23
|
+
4. Pass each subagent only the compiled `prompt` for its phase — never forward raw `$ARGUMENTS` to planners.
|
|
25
24
|
|
|
26
25
|
---
|
|
27
26
|
|
|
@@ -72,9 +71,8 @@ the following steps in order:
|
|
|
72
71
|
the output filename: `{YYYY-MM-DD}_pagespeed-{hostname}-claude.md`.
|
|
73
72
|
|
|
74
73
|
2. **Collect** — Call the PageSpeed Insights API for the requested strategy
|
|
75
|
-
(`mobile`, `desktop`, or `both`)
|
|
76
|
-
|
|
77
|
-
Otherwise, use `WebFetch` to call the PSI endpoint directly.
|
|
74
|
+
(`mobile`, `desktop`, or `both`) using `WebFetch` to call the PSI endpoint
|
|
75
|
+
directly.
|
|
78
76
|
|
|
79
77
|
3. **Analyze** — Extract Core Web Vitals (LCP, INP, CLS, FCP, TTFB, TBT),
|
|
80
78
|
identify the LCP element, enumerate third-party scripts by blocking time,
|