Skip to content

Conversation

@osterman
Copy link
Member

@osterman osterman commented Oct 31, 2025

Summary

Comprehensive enhancements to Claude agents for the Atmos project, adding critical requirements for CLI development, code review, testing, documentation, and code organization patterns.

Key Additions:

  • Zero-config philosophy and sensible defaults
  • Global flags consistency (--chdir, --no-color, --identity, etc.)
  • XDG Base Directory support for cache/credentials
  • Cross-platform file operations (filepath functions, named constants)
  • Dynamic terminal width handling
  • Environment variable conventions (ATMOS_ prefix, configuration precedence)
  • Code organization patterns (cmd/markdown, go:embed, error wrapping)
  • GitHub CLI command reference for PR review automation
  • CI workflow for agent file size limits

Agents Enhanced

cli-developer (6 commits)

  • Flag design questioning and testability
  • Global flags consistency patterns
  • Environment variable binding with Viper
  • XDG Base Directory usage
  • Cross-platform file operations
  • Terminal width dynamic sizing
  • Code organization patterns (cmd/markdown, go:embed, error wrapping)
  • Zero-config philosophy

code-reviewer (2 commits)

  • Review filesystem operations for XDG usage
  • Check for hardcoded path separators
  • Verify magic number prevention with named constants
  • Environment variable conventions (ATMOS_ prefix, viper.BindEnv)
  • Cross-platform compatibility validation

documentation-writer (1 commit)

  • Document environment variables for EVERY flag
  • Show configuration precedence in examples

pr-review-resolver (1 commit)

  • GitHub CLI commands for CodeRabbit review comments
  • Rate limit handling (retry up to 1 hour)
  • Efficient token usage (pagination, minimal preview)
  • Reply mechanism with GraphQL API
  • CI failure detection and log extraction

security-auditor (1 commit)

  • Library vetting and licensing requirements
  • CodeQL compliance and SBOM tracking

CI Enhancements

.github/workflows/claude.yml (1 commit)

  • Extended to check ALL .claude/agents/*.md files
  • Same 40k character limit for agents as CLAUDE.md
  • Clear size reporting (chars and percentage)

Technical Details

Key Conventions

  • ATMOS_ prefix: Mandatory for all environment variables
  • Configuration precedence: CLI flags → ENV vars → Config files → Defaults
  • XDG for cache: ~/.cache/atmos/, ~/.local/share/atmos/, ~/.config/atmos/
  • File operations: Use filepath.Join (never hardcoded "/" separators)
  • Terminal width: templates.GetTerminalWidth() for dynamic sizing
  • Error wrapping: Always provide context with fmt.Errorf("%w: ...", err)
  • Code organization: cmd/markdown/*.md for examples, go:embed for text blocks

File Size Management

All agents pass 40k character limit:

  • cli-developer: 39,992 chars (99.9% - at limit)
  • security-auditor: 35,665 chars (89%)
  • code-reviewer: 26,516 chars (66%)
  • All others well under limit

Test Plan

  • ✅ All agent files under 40k character limit
  • ✅ CI workflow validates agent sizes
  • ✅ No .scratch files staged for commit
  • ✅ Pre-commit hooks pass (trim whitespace, yaml validation)
  • ✅ Comprehensive documentation of all requirements

References

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added comprehensive internal AI agent specifications and development guidelines to support project infrastructure.
    • Enhanced CI/CD workflow validation for agent documentation files.
    • Updated project configuration for code ownership and exclusions.

Note: This release contains infrastructure and internal documentation updates only. No user-facing features or changes are included.

osterman and others added 19 commits October 30, 2025 16:50
Updated the blog writer agent to better align with Atmos blog post standards:

**Scope Clarification:**
- Explicitly for blog announcements only (not technical documentation)
- Clear guidance on when to use vs. when NOT to use this agent
- Distinction between user-facing and contributor-facing content

**Writing Philosophy Updates:**
- Emphasis on problem-first narrative without hyperbole
- Measured length - concise posts without unnecessary padding
- Minimal, verifiable examples (avoid complex untested syntax)
- Link to documentation instead of replicating content
- Only include migration guides when actually needed

**Audience Awareness:**
- Two distinct audiences: Atmos users vs. core developers
- Appropriate tagging (feature/enhancement/bugfix vs. contributors)
- Adjust depth and language based on audience

**Quality Standards:**
- 10-point checklist before finalizing posts
- Mandatory documentation link verification process
- Reference to existing blog posts as style examples
- Integration with CLAUDE.md requirements (file naming, front matter, tags)

**Removed:**
- Overly prescriptive structure that forced rigid formats
- Emphasis on "revolutionary" and "game-changing" language
- Deep technical implementation details better suited for docs

The agent now produces concise, focused announcements that explain what changed and why users should care, with clear links to complete documentation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Renamed from atmos-blog-writer to changelog-writer for clarity:
- Removed "atmos" prefix (repository context makes it obvious)
- "Changelog Writer" better describes the agent's purpose (changelog-style announcements)

Added Docusaurus author requirements:
- Must use PR opener's GitHub username as author
- If new author, must add to website/blog/authors.yml
- Provided example format for new authors
- Updated content quality checklist to verify author setup

Emphasized Docusaurus MDX format:
- All blog posts must be .mdx (not .md)
- Proper YAML front matter required
- Updated checklist to verify format compliance

Updated all references throughout agent file:
- Agent name in front matter
- Description text
- Example usages
- Internal documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Renamed agent for clarity and consistency:
- Removed "atmos" prefix (repository context makes it obvious)
- "PRD Writer" better describes the agent's dual purpose:
  1. Writing/updating Product Requirement Documents
  2. Providing architectural guidance for features

Added PRD writing guidelines:
- Location: All PRDs must be in docs/prd/
- Naming: Use kebab-case (e.g., command-registry-pattern.md)
- Structure requirements (overview, problem, solution, technical details, etc.)
- Reference existing PRDs for style consistency
- Ensure alignment with CLAUDE.md patterns

Updated all references throughout agent file:
- Agent name in front matter
- Description and examples
- Added example for PRD creation workflow
- Removed "Atmos" references to be repo-agnostic

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…security

Created three high-priority agents to complete the software delivery pipeline:

## 1. Test Strategy Architect (test-strategy-architect.md)
**Purpose:** Design comprehensive test strategies ensuring 80%+ coverage

**Key Features:**
- Analyzes code testability before designing tests
- Collaborates with Refactoring Architect to make code testable
- Enforces CLAUDE.md testing requirements (cmd.NewTestKit, mocks, golden snapshots)
- Designs unit tests with mocks (80% of coverage)
- Minimal integration tests (20% or less)
- Table-driven test patterns
- Mock generation with go.uber.org/mock/mockgen
- Golden snapshot testing for CLI output

**Collaboration:**
- Works with Refactoring Architect when code isn't testable
- Works with Feature Development Orchestrator for new feature test design
- Works with Bug Investigator for reproduction test strategies

## 2. Refactoring Architect (refactoring-architect.md)
**Purpose:** Systematic refactoring to modern patterns with zero regression

**Key Features:**
- Enforces all CLAUDE.md MANDATORY patterns:
  - Registry pattern for commands/providers
  - Interface-driven design with DI
  - Options pattern (no parameter drilling)
  - Comment preservation (NEVER delete comments)
  - Performance tracking (defer perf.Track())
  - File organization (<600 lines)
  - Package organization (avoid utils bloat)
- Test-driven refactoring (write tests first, then refactor)
- Incremental, safe changes over big rewrites
- Reduces cognitive complexity (<15 per function)
- Expands test coverage during refactoring

**Collaboration:**
- Works with Test Strategy Architect to ensure testability
- Responds to Lint Resolver complexity escalations
- Works with Bug Investigator on design-issue bugs

## 3. Security Auditor (security-auditor.md)
**Purpose:** Review code for security vulnerabilities and credential exposure

**Key Features:**
- Credential security (no hardcoded secrets, no secrets in logs)
- Keyring security (system/file/memory backends)
- Authentication flow security (OAuth2, SAML, state validation)
- Encryption security (AES-256, proper key derivation)
- Input validation (path traversal, injection prevention)
- Secure defaults (system keyring, HTTPS only)
- Security logging (audit events without secrets)
- Atmos-specific security context (AWS IAM Identity Center, credential lifecycle)

**Collaboration:**
- Works with Feature Development Orchestrator on auth features
- Works with Bug Investigator on security vulnerabilities
- Reviews PR security comments with PR Review Resolver

## Analysis Document (AGENT_ANALYSIS.md)
Comprehensive analysis of existing agents against CLAUDE.md requirements:

**Gaps Identified in Existing Agents:**
- Comment Preservation missing from several agents
- Performance Tracking underemphasized
- Schema update requirements not mentioned
- Golden Snapshot testing missing
- Error handling requirements incomplete

**Recommendations for Updates:**
- prd-writer: Add comment preservation, performance tracking, schema updates
- bug-investigator: Add error handling requirements, comment preservation
- feature-development-orchestrator: Strengthen registry pattern, add schemas
- tech-docs-writer: Add documentation link verification

**Agent Collaboration Workflows:**
Documented three key workflows:
1. Feature Development with Tests
2. Refactoring with Test Improvement
3. Security-Critical Feature Development

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…iter with Mermaid

Created two new specialized agents and enhanced tech-docs-writer:

**New Agents:**
1. code-reviewer: Pre-commit code review ensuring standards compliance
   - Validates against CLAUDE.md patterns (Registry, Interface-Driven, Options)
   - Verifies linting, function naming, and code reuse
   - Ensures 80%+ test coverage and test quality
   - Provides detailed feedback with fix suggestions
   - Blocks commits when critical issues found

2. frontend-developer: React/Docusaurus website development expert
   - Deep expertise in Docusaurus 3.x, React, TypeScript, Tailwind
   - Component reuse philosophy (enhance vs create new)
   - Accessibility (WCAG 2.1 AA), dark mode, performance optimization
   - Collaborates with tech-docs-writer for component needs
   - Inventories existing components (Card, Terminal, File, etc.)

**Enhanced tech-docs-writer:**
- Added Mermaid diagram expertise as core responsibility
- Comprehensive Mermaid guidelines with diagram type examples
- Best practices for flowcharts, sequence, class, and state diagrams
- When to use diagrams vs text explanations
- Visual clarity as quality standard

These agents complete the software delivery automation workflow:
- code-reviewer validates before commits
- frontend-developer handles website/documentation components
- tech-docs-writer creates documentation with visual diagrams

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Adds administrative review requirement for the `.claude/` directory to protect
Claude agent configurations from unauthorized changes. This follows the same
strict protection pattern used for critical files like:
- .github/mergify.yml
- .github/CODEOWNERS

Changes to Claude agents now require @cloudposse/admins approval before merging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…t, example-builder, cli-developer

**Agent Renames:**
- tech-docs-writer → documentation-writer (expanded role)
- test-strategy-architect → test-automation-expert (focus on implementation)

**New Agents:**

1. **documentation-writer** (renamed from tech-docs-writer):
   - Ensures documentation stays synchronized with code changes
   - Collaborates with prd-writer to keep PRDs current
   - Works with changelog-writer for proper announcements
   - Coordinates with example-builder for working examples
   - Proactively verifies documentation completeness

2. **test-automation-expert** (renamed from test-strategy-architect):
   - Creates and maintains automated tests for all new functionality
   - Ensures 80%+ test coverage through intelligent test design
   - Implements unit tests with mocks (90%) and integration tests (10%)
   - Creates regression tests for bug fixes
   - Uses TestKit, Sandbox, and golden snapshots (CLAUDE.md compliant)

3. **example-builder**:
   - Creates testable, functioning examples (no pseudocode)
   - Each example demonstrates one specific use case
   - Located in examples/ folder with lightweight README
   - Works with documentation-writer to support docs
   - Enriches existing examples when sensible

4. **cli-developer**:
   - Expert in Charm Bracelet libraries (Bubble Tea, Lip Gloss, Bubbles)
   - Expert in Cobra, Viper, and modern CLI conventions
   - Focuses on developer experience (DX) and visual presentation
   - Handles TTY detection, headless terminals, line wrapping
   - Questions flag proliferation, ensures intuitive commands
   - Critical evaluation of visual output and error helpfulness

**Updated References:**
- Updated frontend-developer to reference documentation-writer
- Updated refactoring-architect to reference test-automation-expert
- All collaboration workflows updated to use new agent names

These agents complete the documentation and CLI development workflows:
- documentation-writer ensures all docs stay current
- test-automation-expert ensures all code is tested
- example-builder provides hands-on learning materials
- cli-developer ensures excellent terminal UX

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Adds administrative review requirement for CLAUDE.md to protect coding
standards and architectural patterns from unauthorized changes.

CLAUDE.md defines mandatory patterns including:
- Registry Pattern
- Interface-Driven Design
- Options Pattern
- Context Usage
- Package Organization
- Error Handling
- Testing Strategy

Changes to coding standards now require @cloudposse/admins approval,
matching the protection level for other critical configuration files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Establishes convention for handling temporary analysis, planning, and working
documents that don't belong in permanent codebase locations.

**Changes:**
- Created `.scratch/` directory for temporary files
- Added `.scratch/README.md` explaining purpose and conventions
- Updated `.gitignore` to ignore `.scratch/*` but keep README
- Moved working files from `.claude/agents/` to `.scratch/`:
  - ADDITIONAL_CONTEXT.md (already applied to test-automation-expert)
  - AGENT_ANALYSIS.md (gap analysis completed)
  - FINAL_UPDATES_SUMMARY.md (changes implemented)

**Convention:**
The `.scratch/` directory is for:
- Planning documents and analysis
- Working notes during development
- Research and investigation findings
- Draft documents that may move to permanent locations

Files in `.scratch/` are temporary and gitignored (except README).

**Benefits:**
- Keeps permanent directories clean (no temporary files)
- Clear separation between working and production content
- Hidden directory (starts with `.`) to avoid clutter
- Documented convention for future use

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…requirements

**Security-Auditor Enhancements:**

1. **CISO-Level Perspective:**
   - Added compliance framework considerations (SOC 2, HIPAA, PCI DSS, GDPR)
   - Comprehensive audit logging requirements
   - Information leakage prevention and masking patterns
   - Compliance posture recommendations

2. **Library Selection and Best Practices:**
   - Mandate mainstream, idiomatic security approaches
   - Approved crypto libraries (standard Go crypto, golang.org/x/crypto)
   - Keyring library requirements (github.com/99designs/keyring)
   - HTTP client security (TLS 1.2+, no InsecureSkipVerify)
   - AWS SDK v2 for authentication flows

3. **Cross-Platform Security:**
   - **Linux:** File permissions (0600), symlink protection, secure temp files
   - **macOS:** Keychain integration, Gatekeeper considerations
   - **Windows:** Credential Manager, ACL handling, long path support
   - Atomic file writes and directory permissions

4. **Information Masking:**
   - Credential masking patterns (AWS keys, tokens)
   - URL masking for query parameters
   - Struct masking with custom JSON marshalers
   - Never log secrets, always mask sensitive data

**Code-Reviewer Enhancements:**

1. **Comprehensive Error Handling (NEW SECTION):**
   - **Sentinel errors:** ALWAYS use static errors from errors/errors.go
   - **Error wrapping:** ALWAYS wrap with context using %w
   - **Error comparison:** ALWAYS use errors.Is() / errors.As(), NEVER string comparison
   - **Error types:** Use custom types with metadata when needed
   - **No deep exits:** NEW code MUST NOT use os.Exit() or log.Fatal()
   - **Semantic logging:** Structured logging with key-value pairs

2. **Registry Pattern Verification (NEW SECTION):**
   - Command registry (MANDATORY for new commands)
   - Component registry verification
   - Store registry verification
   - Block direct registration patterns

3. **Enhanced Checks:**
   - Verify no os.Exit() in new code paths
   - Verify structured logging (not fmt.Sprintf in logs)
   - Verify registry pattern usage for extensible features
   - Check for proper error wrapping with context

Both agents now enforce:
- Mainstream, proven approaches (no "clever" solutions)
- Cross-platform compatibility (Linux, macOS, Windows)
- Comprehensive audit and compliance requirements
- Modern Go error handling idioms
- Registry pattern for extensibility

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
… agent

Establishes project-wide convention for temporary working files to prevent
pollution of the filesystem with non-deliverable content.

**CLAUDE.md Updates:**

Added "Scratch Folder Convention (MANDATORY)" section:
- ALL temporary, working, and non-deliverable files MUST go in `.scratch/`
- Clear guidelines on what goes in .scratch (planning, analysis, drafts)
- Clear guidelines on what does NOT go in .scratch (code, tests, docs, PRDs)
- Migration path from .scratch to permanent locations
- NEVER write temporary files across the filesystem

**What goes in `.scratch/`:**
- Planning documents and analysis
- Working notes during development
- Research and investigation findings
- Draft documents before moving to permanent location
- Any file not part of final deliverable

**Migration paths:**
- PRDs → `docs/prd/`
- Documentation → `website/docs/`
- Examples → `examples/`
- Agent definitions → `.claude/agents/`
- Code → appropriate package directories

**prd-writer Agent Updates:**

Added "PRD Location and Naming (MANDATORY)" section:
- ALL PRDs MUST be written to `docs/prd/` directory
- Use kebab-case naming (e.g., `oauth2-authentication.md`)
- NEVER write PRDs to .scratch, docs root, or other locations
- Use .scratch only for planning/drafts BEFORE writing final PRD
- Updated Critical Constraints to enforce PRD location and scratch usage

**Benefits:**
- Prevents temporary files from polluting the codebase
- Clear separation between working files and deliverables
- Consistent location for all temporary work
- Easy cleanup (entire .scratch can be deleted safely)
- Enforced through CLAUDE.md and agent instructions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…compliance

Security-auditor now comprehensively vets all library dependencies before approval.

**Library Vetting Requirements (NEW SECTION):**

1. **Maintenance Status:**
   - Actively maintained (commits within 6 months)
   - Not archived or deprecated
   - Active issue triage and security responses
   - Forbidden libraries listed (archived github.com/golang/mock, etc.)

2. **License Compatibility (MANDATORY):**
   - ALL dependencies MUST be Apache 2.0 compatible
   - Compatible: Apache 2.0, MIT, BSD, ISC, MPL 2.0
   - FORBIDDEN: GPL/LGPL/AGPL (copyleft incompatible)
   - FORBIDDEN: Proprietary or unknown licenses
   - Verification with go-licenses tool

3. **Security Track Record:**
   - CVEs addressed promptly (within 30 days)
   - Security policy documented (SECURITY.md)
   - No unpatched vulnerabilities
   - Verify with govulncheck and GitHub Advisory Database
   - Check Snyk vulnerability database

4. **Code Quality Standards (CodeQL Compliance):**
   - Library code quality aligns with .golangci.yml standards
   - **Go quality checks:**
     - errorlint: Proper %w wrapping, errors.Is/As usage
     - gosec: No security vulnerabilities
     - cyclop: Cognitive complexity < 15
     - forbidigo: No forbidden patterns (os.Getenv, path.Join, archived deps)
     - bodyclose, err113, loggercheck compliance
   - **JavaScript/TypeScript quality checks:**
     - No XSS, prototype pollution
     - Proper input validation
     - CSP compliant

**Decision Matrix:**
- ✅ APPROVED: Actively maintained, Apache 2.0 compatible, good security, passes CodeQL
- ⚠️ NEEDS REVIEW: Minor issues requiring legal/security review
- ❌ BLOCKED: Archived, incompatible license, vulnerabilities, poor quality

**References CodeQL Workflow:**
- .github/workflows/codeql.yml (Go and JavaScript/TypeScript analysis)
- .golangci.yml (linter configuration with custom plugins)
- Enforces code quality standards across all dependencies

Security-auditor now acts as gatekeeper ensuring:
- Only maintained, secure libraries are used
- All licenses are Apache 2.0 compatible
- Code quality meets project standards
- No archived or vulnerable dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…requirements

Add comprehensive flag design guidelines:
- Question flag proliferation (avoid too many flags)
- Avoid negative flags (no --disable-*, prefer positive flags)
- Exception for CLI conventions (--no-color, --no-verify allowed)
- Make flags flexible and reusable
- Use conventional flag names

Add environment variable handling:
- Always use viper.BindEnv instead of os.Getenv
- Document configuration precedence

Enhance testability requirements:
- Work closely with test-automation-expert
- Design for testability (interfaces, DI)
- Avoid hard-to-test patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…lver

Add validated and optimized GitHub CLI commands reference:
- Get PR information and head SHA
- Find CodeRabbit review comments efficiently (paginated, per_page=100)
- Reply to review comments with GraphQL API
- Find failing CI checks and get test output
- Complete workflow examples

Rate limit management improvements:
- Mandatory automatic retry with backoff (up to 1 hour)
- Rate limit checking command
- Clear protocol for 5-minute intervals, 12 max retries
- Token-efficient pagination strategies

Command optimization tips:
- Use --paginate with per_page=100 for lists
- Filter with JQ after fetching to minimize API calls
- Batch operations, cache results
- Distinguish review comments (code-level) vs issue comments (general)

All commands tested and validated against cloudposse/atmos PR #712.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add comprehensive "Global Flags Consistency (MANDATORY)" section:
- Core global flags reference (navigation, identity, output, debugging)
- When to support each flag (context-specific guidance)
- Example: Adding --identity to new commands with NoOptDefVal pattern
- Example: Respecting --no-color in visual output
- Example: Interactive selection with --identity
- Global flag testing requirements with table-driven tests
- Common mistakes to avoid (local vs persistent flags, ignoring --no-color)

Key requirements:
- EVERY new command MUST support applicable global flags
- --chdir/-C, --no-color, --logs-level always supported (via RootCmd)
- --identity for authentication-aware commands (AWS, Azure, GCP)
- --pager for long output commands
- PersistentFlags for parent commands (affects subcommands)
- NoOptDefVal pattern for interactive selection (--identity without value)
- viper.BindEnv integration for config file + env var support

Updated Quality Checklist:
- Global flags support verification
- --no-color respected in all visual output
- --identity pattern with PersistentFlags
- Global flag tests for --chdir, --no-color, --identity

Ensures consistent UX across all Atmos commands.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Extend the CLAUDE.md size check workflow to also validate all agent files:
- Check all .claude/agents/**/*.md files (not just CLAUDE.md)
- Same 40k character limit applies to all files
- Workflow triggers on changes to agent files or CLAUDE.md
- Clear output showing each file's size and percentage of limit

Changes:
- Workflow name: "CLAUDE.md" → "Claude Documentation Size Check"
- Job name: "Check file size" → "Check file sizes"
- Added "Find all agent files" step
- Added "Check agent file sizes" step with comprehensive reporting
- Updated paths trigger to include .claude/agents/**/*.md

Current status (all passing):
- cli-developer.md: 38,837 chars (97% of limit)
- security-auditor.md: 35,665 chars (89% of limit)
- All other agents: < 65% of limit

Prevents agent files from growing too large, ensuring they remain
within Claude Code's context window constraints.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…li-developer

Add three critical sections (compressed to fit 40k limit):

### XDG Base Directory (MANDATORY)
- Use pkg/xdg for cache/credentials/data storage
- NOT for project files (atmos.yaml, stacks/*, components/*)
- Three functions: GetXDGCacheDir, GetXDGDataDir, GetXDGConfigDir
- Precedence: ATMOS_XDG_*_HOME → XDG_*_HOME → platform defaults

### Cross-Platform File Operations (MANDATORY)
- Always use filepath.Join (never hardcoded "/" separators)
- Use filepath.Clean, .Abs, .Dir, .Base, .Ext
- Named constants for file permissions (not magic numbers)
- Example: FilePermissionUserReadWrite = 0600

### Terminal Width
- Use templates.GetTerminalWidth() for dynamic sizing
- Named constants for layout (MinTerminalWidth, DefaultTerminalWidth, etc.)
- Returns terminal width - 2, or 80 if not TTY

Updated Quality Checklist:
- ✅ XDG usage (pkg/xdg for cache/data, not project files)
- ✅ filepath functions (Join, Clean, etc - no hardcoded separators)
- ✅ Named constants (no magic numbers for permissions/widths)
- ✅ Terminal width (templates.GetTerminalWidth() for dynamic sizing)

File size: 39,998 chars (99.9% of 40k limit)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…uirements

Update three agents with environment variable and configuration precedence requirements:

### cli-developer
Enhanced environment variables section:
- Mandatory ATMOS_ prefix for all environment variables
- Format: ATMOS_<FLAG_NAME> (uppercase, underscores)
- Example: --base-path → ATMOS_BASE_PATH
- Configuration precedence: CLI flags → ENV vars → Config files → Defaults
- ALWAYS viper.BindEnv (NEVER os.Getenv - linter will flag)
- Bind flags with viper.BindPFlag for precedence

Compressed section by 432 bytes while adding requirements.
File size: 39,566 chars (98.9% of 40k limit)

### code-reviewer
Enhanced "Additional Standards Checks" section:

**Environment Variables (CRITICAL)**
- Check: Every flag MUST have ATMOS_ prefixed env var
- Check: Configuration precedence MUST be maintained
- Check: viper.BindPFlag used for flag-to-config binding
- Flag: os.Getenv usage (forbidden)
- Flag: Missing ATMOS_ prefix
- Flag: Missing BindPFlag (breaks precedence)

**Cross-Platform Compatibility (CRITICAL)**
- Check: XDG functions for cache/data (not project files)
- Check: Named constants for permissions (no magic numbers)
- Check: Terminal width uses templates.GetTerminalWidth()
- Flag: XDG for project-specific files (stacks, components)
- Flag: Magic numbers (0600, 0755, etc.)
- Flag: Hardcoded terminal width

### documentation-writer
Enhanced documentation standards:
- MANDATORY: Document ATMOS_ env var for EVERY flag
- Document configuration precedence
- Updated flag documentation template with environment variable field

Example:
```markdown
<dt>--base-path</dt>
<dd>
  Base path for Atmos configuration

  **Environment variable:** `ATMOS_BASE_PATH`
</dd>
```

Ensures consistency: CLI Developer implements conventions, Code Reviewer enforces them, Documentation Writer documents them.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…i-developer agent

Enhanced cli-developer agent with:
- Zero-config philosophy: Everything works out-of-the-box with sensible defaults
- Code organization patterns:
  - Use cmd/markdown/*.md for help/examples (not inline strings)
  - Use go:embed for multi-line text blocks
  - Wrap errors with context (not generic errors)
- Updated Core Philosophy to emphasize error wrapping with context
- Compressed existing sections to stay under 40k limit (39,992 chars - 99%)

These additions ensure CLI commands are:
- Zero-config by default (configuration is optional, not required)
- Properly organized with external markdown files
- Error messages provide context for debugging

File size: 39,992 / 40,000 chars (99%)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@osterman osterman requested review from a team as code owners October 31, 2025 02:47
@github-actions
Copy link

Warning

This PR is blocked from merging because a required semver label is missing.

major, minor, patch, no-release

You'll need to add one before this PR can be merged.

@github-actions github-actions bot added the size/xl Extra large size PR label Oct 31, 2025
@mergify
Copy link

mergify bot commented Oct 31, 2025

Warning

This PR exceeds the recommended limit of 1,000 lines.

Large PRs are difficult to review and may be rejected due to their size.

Please verify that this PR does not address multiple issues.
Consider refactoring it into smaller, more focused PRs to facilitate a smoother review process.

@mergify
Copy link

mergify bot commented Oct 31, 2025

Important

Cloud Posse Engineering Team Review Required

This pull request modifies files that require Cloud Posse's review. Please be patient, and a core maintainer will review your changes.

To expedite this process, reach out to us on Slack in the #pr-reviews channel.

@mergify mergify bot added the needs-cloudposse Needs Cloud Posse assistance label Oct 31, 2025
@github-actions
Copy link

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 31, 2025

📝 Walkthrough

Walkthrough

This PR introduces a comprehensive agent specification framework by adding 16 new Claude agent definition documents to .claude/agents/, expanding CLAUDE.md with scratch folder conventions and additional mandatory guidelines, updating the CI workflow to discover and validate agent file sizes, and adding planning/context documents in .scratch/ for future refinement.

Changes

Cohort / File(s) Summary
Agent Specifications
.claude/agents/bug-investigator.md, .claude/agents/changelog-writer.md, .claude/agents/ci-failure-resolver.md, .claude/agents/cli-developer.md, .claude/agents/code-reviewer.md, .claude/agents/documentation-writer.md, .claude/agents/example-builder.md, .claude/agents/feature-development-orchestrator.md, .claude/agents/frontend-developer.md, .claude/agents/lint-resolver.md, .claude/agents/pr-manager.md, .claude/agents/pr-review-resolver.md, .claude/agents/prd-writer.md, .claude/agents/refactoring-architect.md, .claude/agents/security-auditor.md, .claude/agents/test-automation-expert.md
New agent role specifications defining responsibilities, workflows, quality standards, collaboration patterns, and operational guidelines for specialized development tasks (e.g., bug investigation, CI failure resolution, code review, documentation, security audits).
CI Workflow & Governance
.github/workflows/claude.yml, .github/CODEOWNERS
Extended CI workflow to discover and validate agent Markdown files under 40,000 characters; added .claude/ and CLAUDE.md to CODEOWNERS under admin group.
Core Documentation
CLAUDE.md
Added Scratch Folder Convention section and expanded mandatory guidelines covering environment variables, logging patterns, schemas, theming, code reuse, cross-platform considerations, and telemetry.
Metadata & Ignore
.gitignore
Added .scratch/* with exception for .scratch/README.md to ignore scratch directory contents while preserving README.
Planning & Context
.scratch/README.md, .scratch/ADDITIONAL_CONTEXT.md, .scratch/AGENT_ANALYSIS.md, .scratch/FINAL_UPDATES_SUMMARY.md
New working documents detailing test strategy updates (TestKit, Sandbox patterns), agent role analysis and gaps, implementation roadmap, and migration conventions for scratch-to-production content.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Areas requiring attention:
    • Agent role boundaries and potential overlaps (e.g., PR Manager vs. PR Review Resolver; Code Reviewer vs. CI Failure Resolver)
    • CI workflow file discovery logic and size-check thresholds (40,000 character limit rationale)
    • Consistency of mandatory patterns (Registry, Interface-Driven Design, testing expectations) across all agent definitions
    • Alignment between agent specifications, CLAUDE.md expansions, and existing project patterns
    • Scratch directory content scope and migration pathway clarity

Possibly related PRs

Suggested labels

no-release

Suggested reviewers

  • aknysh

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "feat: Comprehensive Claude Agent Enhancements" directly relates to the changeset's primary objective: introducing a comprehensive suite of Claude agent specifications and supporting infrastructure. The PR adds 15+ new agent markdown files (.claude/agents/*.md) covering CLI development, code review, testing, documentation, security, and related roles, along with workflow updates (.github/workflows/claude.yml), codeowner configuration, and expanded guidance in CLAUDE.md. The term "Comprehensive" accurately captures the scope and scale of additions. The title is specific enough for a teammate scanning PR history to understand the main change without confusion.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch claude-agents

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (12)
.claude/agents/bug-investigator.md (1)

1-125: Strong diagnostic workflow with minor punctuation inconsistencies.

The phased approach (Initial Diagnosis → Reproduction → Solution Planning → Implementation) is methodical and thorough. The emphasis on test-driven bug fixing aligns well with CLAUDE.md testing standards.

Minor issue: Static analysis flags missing punctuation at lines 40, 54, and 107. While these are in list items, CLAUDE.md emphasizes that "all comments must end with periods (enforced by godot linter)." For consistency with the project's punctuation standards, consider adding periods to complete sentences in the workflow phases.

CLAUDE.md (1)

372-408: Comprehensive scratch folder convention with clear migration paths.

The addition clarifies where temporary work belongs and prevents filesystem clutter. The explicit lists of what goes in vs what doesn't go in .scratch/ will help developers make correct decisions.

Minor fix: Add a language identifier to the code block starting at line 375 to satisfy markdown linting (MD040).

Apply this diff:

-```
+```plaintext
 .scratch/               # Temporary working files (gitignored except README)
 ├── README.md          # Documents scratch folder purpose (committed)
 ├── analysis.md        # Temporary analysis (not committed)
.claude/agents/code-reviewer.md (1)

99-353: Outstanding error handling guidance with concrete examples.

The error handling section is particularly strong, covering:

  • Sentinel errors vs dynamic errors
  • Error wrapping with context
  • Proper use of errors.Is() and errors.As()
  • Semantic logging with structured key-value pairs

The good/bad code examples make it crystal clear what patterns to follow. This will significantly improve error handling consistency across the codebase.

Minor: Static analysis notes missing punctuation at lines 66, 74 (end of list sections). Consider adding periods for consistency with CLAUDE.md's punctuation standards.

.claude/agents/refactoring-architect.md (1)

455-513: Strong collaboration patterns with other agents.

The collaboration sections show how Refactoring Architect integrates with:

  • Test Strategy Architect (for testability improvements)
  • Lint Resolver (for complexity reduction)
  • Bug Investigator (when bugs indicate design issues)

These workflows demonstrate good agent coordination. Static analysis notes missing language identifiers for the text blocks at lines 460, 471, 488, 503. Consider adding identifiers for consistency.

.claude/agents/example-builder.md (1)

56-71: Add language specifiers to fenced code blocks (MD040).

Several code blocks lack language identifiers, making them harder to read and causing linting failures. Review lines 56–71, 127–130, 169–169, and others where fenced blocks appear without language tags.

Example fix for line 56–71:

-```
+```yaml
 examples/
 ├── stack-inheritance/

Apply consistently throughout the file to all code examples.

.scratch/ADDITIONAL_CONTEXT.md (1)

70-112: Add language specifiers to code blocks (MD040 compliance).

Fenced code blocks at lines 71–91, 116–152, 167–209, 224–235, 247–259 need language identifiers. Add ```go, ```markdown, ```bash as appropriate.

This is a scratch planning document, so formatting is secondary. Only fix if you're updating related agent files based on this guidance.

.claude/agents/feature-development-orchestrator.md (1)

98-98: Use proper Markdown headings for Phase sections instead of bold emphasis.

Lines 98, 105, 112, 119, 128, 136, and 145 use **Phase N: ...** (emphasis) when they should use ### Phase N: ... (Markdown heading). This improves document structure and consistency across agent specifications.

Apply this diff to fix the formatting:

-**Phase 1: Foundation**
+### Phase 1: Foundation

Repeat for all 7 Phase sections. This ensures proper semantic structure and document navigation.

Also applies to: 105-105, 112-112, 119-119, 128-128, 136-136, 145-145

.claude/agents/cli-developer.md (2)

677-677: Use proper heading syntax for "Exception: Standard CLI conventions".

Line 677 uses emphasis (**Exception: Standard CLI conventions**) but should use a Markdown heading (### Exception: Standard CLI conventions) for proper document structure.


501-501: Add language tags to fenced code blocks.

Multiple code blocks lack language identifiers (e.g., ```bash or ```go). Add appropriate language tags for better syntax highlighting and accessibility:

  • Line 501: ``````bash
  • Line 519: `````` (plain text example, acceptable as-is)
  • Lines 1233, 1247, 1265, 1286, 1300, 1311, 1323: Similar pattern

Also applies to: 519-519, 1233-1233, 1247-1247, 1265-1265, 1286-1286, 1300-1300, 1311-1311, 1323-1323

.claude/agents/frontend-developer.md (1)

94-94: Add language identifiers to fenced code blocks.

Several code blocks lack language tags. Add appropriate identifiers for syntax highlighting:

  • Line 94: ``````yaml
  • Line 417: `````` (text or bash)
  • Line 527: ``````markdown
  • Line 577: ``````markdown

Also applies to: 417-417, 527-527, 577-577

.claude/agents/documentation-writer.md (1)

255-255: Convert indented code block to fenced code block (line 255).

Line 255 uses indented code block syntax. Convert to fenced block with language tag for consistency and better rendering:

-    ```yaml
-    # atmos.yaml
-    integration:
-      setting: value
-    ```
+```yaml
+# atmos.yaml
+integration:
+  setting: value
+```
.claude/agents/pr-manager.md (1)

36-36: Fix emphasis spacing in line 36.

Remove extra spaces inside emphasis markers:

-- **ONLY making documentation changes (*.md, *.mdx files)**
+- **ONLY** making documentation changes (*.md, *.mdx files)

Or better yet, remove the emphasis entirely since it's not needed for emphasis here:

-- **ONLY making** documentation changes (*.md, *.mdx files)
+- Only documentation changes (*.md, *.mdx files)
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between e811da0 and 401a7eb.

📒 Files selected for processing (24)
  • .claude/agents/bug-investigator.md (1 hunks)
  • .claude/agents/changelog-writer.md (1 hunks)
  • .claude/agents/ci-failure-resolver.md (1 hunks)
  • .claude/agents/cli-developer.md (1 hunks)
  • .claude/agents/code-reviewer.md (1 hunks)
  • .claude/agents/documentation-writer.md (1 hunks)
  • .claude/agents/example-builder.md (1 hunks)
  • .claude/agents/feature-development-orchestrator.md (1 hunks)
  • .claude/agents/frontend-developer.md (1 hunks)
  • .claude/agents/lint-resolver.md (1 hunks)
  • .claude/agents/pr-manager.md (1 hunks)
  • .claude/agents/pr-review-resolver.md (1 hunks)
  • .claude/agents/prd-writer.md (1 hunks)
  • .claude/agents/refactoring-architect.md (1 hunks)
  • .claude/agents/security-auditor.md (1 hunks)
  • .claude/agents/test-automation-expert.md (1 hunks)
  • .github/CODEOWNERS (1 hunks)
  • .github/workflows/claude.yml (2 hunks)
  • .gitignore (1 hunks)
  • .scratch/ADDITIONAL_CONTEXT.md (1 hunks)
  • .scratch/AGENT_ANALYSIS.md (1 hunks)
  • .scratch/FINAL_UPDATES_SUMMARY.md (1 hunks)
  • .scratch/README.md (1 hunks)
  • CLAUDE.md (1 hunks)
🧰 Additional context used
🧠 Learnings (30)
📚 Learning: 2025-01-25T03:51:57.689Z
Learnt from: Listener430
Repo: cloudposse/atmos PR: 934
File: tests/fixtures/scenarios/docs-generate/README.md.gotmpl:99-118
Timestamp: 2025-01-25T03:51:57.689Z
Learning: For the cloudposse/atmos repository, changes to template contents should be handled in dedicated PRs and are typically considered out of scope for PRs focused on other objectives.

Applied to files:

  • .github/CODEOWNERS
  • .claude/agents/feature-development-orchestrator.md
  • .claude/agents/changelog-writer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to website/** : Keep CLI and website documentation in sync; document new features with examples and use cases

Applied to files:

  • .claude/agents/cli-developer.md
  • .claude/agents/documentation-writer.md
  • .claude/agents/example-builder.md
  • CLAUDE.md
  • .claude/agents/changelog-writer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to website/** : Ensure consistency between CLI help text and website documentation

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to README.md : Update README.md when adding new commands and features

Applied to files:

  • .claude/agents/cli-developer.md
  • CLAUDE.md
📚 Learning: 2025-09-13T18:06:07.674Z
Learnt from: samtholiya
Repo: cloudposse/atmos PR: 1466
File: toolchain/list.go:39-42
Timestamp: 2025-09-13T18:06:07.674Z
Learning: In the cloudposse/atmos repository, for UI messages in the toolchain package, use utils.PrintfMessageToTUI instead of log.Error or fmt.Fprintln(os.Stderr, ...). Import pkg/utils with alias "u" to follow the established pattern.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-10-11T19:11:58.965Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 1599
File: internal/exec/terraform.go:0-0
Timestamp: 2025-10-11T19:11:58.965Z
Learning: For terraform apply interactivity checks in Atmos (internal/exec/terraform.go), use stdin TTY detection (e.g., `IsTTYSupportForStdin()` or checking `os.Stdin`) to determine if user prompts are possible. This is distinct from stdout/stderr TTY checks used for output display (like TUI rendering). User input requires stdin to be a TTY; output display requires stdout/stderr to be a TTY.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to cmd/**/*.go : Provide meaningful user feedback and include progress indicators for long-running operations

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2024-10-23T21:36:40.262Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 740
File: cmd/cmd_utils.go:340-359
Timestamp: 2024-10-23T21:36:40.262Z
Learning: In the Go codebase for Atmos, when reviewing functions like `checkAtmosConfig` in `cmd/cmd_utils.go`, avoid suggesting refactoring to return errors instead of calling `os.Exit` if such changes would significantly increase the scope due to the need to update multiple call sites.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2024-10-31T19:25:41.298Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 727
File: internal/exec/terraform_clean.go:233-235
Timestamp: 2024-10-31T19:25:41.298Z
Learning: When specifying color values in functions like `confirmDeleteTerraformLocal` in `internal/exec/terraform_clean.go`, avoid hardcoding color values. Instead, use predefined color constants or allow customization through configuration settings to improve accessibility and user experience across different terminals and themes.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2024-12-07T16:16:13.038Z
Learnt from: Listener430
Repo: cloudposse/atmos PR: 825
File: internal/exec/helmfile_generate_varfile.go:28-31
Timestamp: 2024-12-07T16:16:13.038Z
Learning: In `internal/exec/helmfile_generate_varfile.go`, the `--help` command (`./atmos helmfile generate varfile --help`) works correctly without requiring stack configurations, and the only change needed was to make `ProcessCommandLineArgs` exportable by capitalizing its name.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2024-12-05T22:33:40.955Z
Learnt from: aknysh
Repo: cloudposse/atmos PR: 820
File: cmd/list_components.go:53-54
Timestamp: 2024-12-05T22:33:40.955Z
Learning: In the Atmos CLI Go codebase, using `u.LogErrorAndExit` within completion functions is acceptable because it logs the error and exits the command execution.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to cmd/**/*.go : Provide clear error messages to users and troubleshooting hints where appropriate

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-05T14:57:37.360Z
Learnt from: RoseSecurity
Repo: cloudposse/atmos PR: 1448
File: cmd/ansible.go:26-28
Timestamp: 2025-09-05T14:57:37.360Z
Learning: The Atmos codebase uses a consistent pattern for commands that delegate to external tools: `PersistentFlags().Bool("", false, doubleDashHint)` where doubleDashHint provides help text about using double dashes to separate Atmos options from native command arguments. This pattern is used across terraform, packer, helmfile, atlantis, aws, and ansible commands.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-10-11T19:12:23.475Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 1599
File: pkg/ui/markdown/renderer.go:143-182
Timestamp: 2025-10-11T19:12:23.475Z
Learning: High-frequency utility and formatting functions (e.g., markdown renderers, formatters) that are called repeatedly during command execution should not have `defer perf.Track()` even if they are public methods. Performance tracking at these levels introduces unnecessary overhead without meaningful insights, as tracking is already present at higher command-execution levels where it provides actionable data.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-13T16:39:20.007Z
Learnt from: samtholiya
Repo: cloudposse/atmos PR: 1466
File: cmd/markdown/atmos_toolchain_aliases.md:2-4
Timestamp: 2025-09-13T16:39:20.007Z
Learning: In the cloudposse/atmos repository, CLI documentation files in cmd/markdown/ follow a specific format that uses " $ atmos command" (with leading space and dollar sign prompt) in code blocks. This is the established project convention and should not be changed to comply with standard markdownlint rules MD040 and MD014.

Applied to files:

  • .claude/agents/cli-developer.md
  • .claude/agents/changelog-writer.md
📚 Learning: 2025-10-07T00:25:16.333Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 1498
File: website/src/components/Screengrabs/atmos-terraform-metadata--help.html:25-55
Timestamp: 2025-10-07T00:25:16.333Z
Learning: In Atmos CLI, subcommands inherit flags from their parent commands via Cobra's command inheritance. For example, `atmos terraform metadata --help` shows `--affected` and related flags inherited from the parent `terraform` command (defined in cmd/terraform.go), even though the metadata subcommand doesn't explicitly define these flags. This is expected Cobra behavior and auto-generated help screengrabs accurately reflect this inheritance.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to cmd/**/*.go : Keep separation of concerns between CLI interface (cmd) and business logic

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-01-30T19:30:59.120Z
Learnt from: samtholiya
Repo: cloudposse/atmos PR: 959
File: cmd/workflow.go:74-74
Timestamp: 2025-01-30T19:30:59.120Z
Learning: Error handling for `cmd.Usage()` is not required in the Atmos CLI codebase, as confirmed by the maintainer.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to cmd/**/*.go : Use Viper for managing configuration, environment variables, and flags in the CLI

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-02-03T05:57:18.407Z
Learnt from: samtholiya
Repo: cloudposse/atmos PR: 959
File: cmd/cmd_utils.go:121-148
Timestamp: 2025-02-03T05:57:18.407Z
Learning: The Atmos CLI should fail fast (exit) when encountering configuration errors, including command alias configuration issues, to prevent undefined behavior. Use LogErrorAndExit instead of returning errors in such cases.

Applied to files:

  • .claude/agents/cli-developer.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Before submitting PRs, ensure tests pass, coverage targets met, run golangci-lint, and update documentation

Applied to files:

  • .claude/agents/code-reviewer.md
  • .claude/agents/test-automation-expert.md
  • .claude/agents/lint-resolver.md
  • .claude/agents/prd-writer.md
  • CLAUDE.md
  • .scratch/FINAL_UPDATES_SUMMARY.md
  • .scratch/ADDITIONAL_CONTEXT.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: All pull requests must pass CI checks (unit tests, integration tests, golangci-lint, coverage reporting)

Applied to files:

  • .claude/agents/code-reviewer.md
  • .claude/agents/test-automation-expert.md
  • CLAUDE.md
  • .scratch/FINAL_UPDATES_SUMMARY.md
📚 Learning: 2025-01-08T19:01:32.938Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 899
File: examples/tests/test-vendor/test-components/main.tf:1-7
Timestamp: 2025-01-08T19:01:32.938Z
Learning: In the examples/tests directory of the atmos project, code examples are intentionally kept minimal and simple to facilitate understanding. Avoid suggesting additional complexity or validations that might make the examples harder to follow.

Applied to files:

  • .claude/agents/example-builder.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Target >80% code coverage for all packages

Applied to files:

  • .claude/agents/test-automation-expert.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to **/*_test.go : Every new feature must include comprehensive unit tests

Applied to files:

  • .claude/agents/test-automation-expert.md
  • .scratch/ADDITIONAL_CONTEXT.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to **/*.go : All code must pass golangci-lint checks

Applied to files:

  • .claude/agents/lint-resolver.md
  • CLAUDE.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: PR descriptions must clearly describe changes, reference issues, and include before/after examples if UI changes

Applied to files:

  • .claude/agents/pr-manager.md
  • .claude/agents/prd-writer.md
📚 Learning: 2025-03-25T12:23:42.649Z
Learnt from: Listener430
Repo: cloudposse/atmos PR: 1149
File: internal/exec/go_getter_utils.go:104-104
Timestamp: 2025-03-25T12:23:42.649Z
Learning: Listener430 plans to add a test for verifying that token injection is skipped for unsupported hosts in a future review or refactoring iteration. This relates to the CustomGitDetector.Detect method in internal/exec/go_getter_utils.go.

Applied to files:

  • .scratch/ADDITIONAL_CONTEXT.md
📚 Learning: 2025-09-23T02:30:42.362Z
Learnt from: CR
Repo: cloudposse/atmos PR: 0
File: .cursor/rules/atmos-rules.mdc:0-0
Timestamp: 2025-09-23T02:30:42.362Z
Learning: Applies to CHANGELOG.md : Update CHANGELOG.md with each release

Applied to files:

  • .claude/agents/changelog-writer.md
📚 Learning: 2025-10-27T01:54:35.665Z
Learnt from: osterman
Repo: cloudposse/atmos PR: 1714
File: website/blog/2025-10-26-zero-config-terminal-output.md:6-6
Timestamp: 2025-10-27T01:54:35.665Z
Learning: In the Atmos blog (website/blog/), blog post authors in frontmatter should always be set to the actual committer or PR opener (e.g., "osterman"), not generic organization names like "cloudposse" or "atmos". Authors must exist in website/blog/authors.yml.

Applied to files:

  • .claude/agents/changelog-writer.md
🪛 LanguageTool
.claude/agents/cli-developer.md

[typographical] ~941-~941: In American English, use a period after an abbreviation.
Context: ...olor(theme.WarningColor)) ) ``` ### UI vs Data Output (MANDATORY) **UI to stderr...

(MISSING_PERIOD_AFTER_ABBREVIATION)


[grammar] ~1009-~1009: Please add a punctuation mark at the end of paragraph.
Context: ...ogging - --version - Available on all commands Support when authentication-aware:...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~1455-~1455: In American English, use a period after an abbreviation.
Context: ...Y detection**: Different output for TTY vs non-TTY - ✅ Theme styles: Uses them...

(MISSING_PERIOD_AFTER_ABBREVIATION)


[style] ~1466-~1466: In American English, abbreviations like “etc.” require a period.
Context: ...Uses filepath.Join, filepath.Clean, etc (no hardcoded separators) - ✅ **Named c...

(ETC_PERIOD)


[style] ~1467-~1467: In American English, abbreviations like “etc.” require a period.
Context: ... magic numbers for permissions, widths, etc - ✅ Terminal width: Uses `templates...

(ETC_PERIOD)


[grammar] ~1472-~1472: Please add a punctuation mark at the end of paragraph.
Context: ...y --chdir, --no-color, --identity behavior ## Success Criteria Excellent CLI imp...

(PUNCTUATION_PARAGRAPH_END)


[style] ~1487-~1487: This phrase is redundant (‘I’ stands for ‘interfaces’). Use simply “CLIs”.
Context: ...uardian of developer experience. Create CLI interfaces that developers love to use.

(ACRONYM_TAUTOLOGY)

.claude/agents/code-reviewer.md

[typographical] ~64-~64: Consider using a typographic opening quote here.
Context: ...ly sorted - ✅ Performance Tracking: defer perf.Track(atmosConfig, "pkg.FuncName")() in public functions - ...

(EN_QUOTES)


[grammar] ~66-~66: Please add a punctuation mark at the end of paragraph.
Context: ...ed files (<600 lines), one cmd/impl per file #### Testing Requirements - ✅ **Test C...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~74-~74: Please add a punctuation mark at the end of paragraph.
Context: ...actual production code, never duplicate logic ### 2. Linting Verification (MANDATORY...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~101-~101: Use a hyphen to join words.
Context: ...viewer is deeply familiar with error handling conventions from docs folder. ...

(QB_NEW_EN_HYPHEN)


[grammar] ~195-~195: Please add a punctuation mark at the end of paragraph.
Context: ...`` ✅ GOOD: Using errors.As for error types ```go var validationErr *ValidationEr...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~346-~346: Consider using a typographic close quote here.
Context: ... "key", value - Use descriptive keys: "stack_name" not "s" - Always include ...

(EN_QUOTES)


[typographical] ~465-~465: Consider using typographic quotation marks here.
Context: ...erIDuser.ID- Getter methods omit "Get":config.GetName()config.Name()` -...

(EN_QUOTES)


[typographical] ~660-~660: In American English, use a period after an abbreviation.
Context: ...lag("base_path", ...) #### Logging vs UIgo // GOOD: UI to stderr, data to...

(MISSING_PERIOD_AFTER_ABBREVIATION)


[typographical] ~873-~873: Consider using a typographic opening quote here.
Context: ...code changes 2. User requests commit or "ready to commit" 3. Code Reviewer agent ...

(EN_QUOTES)


[typographical] ~873-~873: Consider using a typographic close quote here.
Context: ...User requests commit or "ready to commit" 3. Code Reviewer agent automatically in...

(EN_QUOTES)


[typographical] ~882-~882: Consider using a typographic opening quote here.
Context: ...cit Review Request ``` 1. User requests "review this code" 2. Code Reviewer agent...

(EN_QUOTES)


[typographical] ~882-~882: Consider using a typographic close quote here.
Context: ...t ``` 1. User requests "review this code" 2. Code Reviewer agent invoked 3. Compr...

(EN_QUOTES)

.claude/agents/bug-investigator.md

[grammar] ~40-~40: Please add a punctuation mark at the end of paragraph.
Context: ...tions that describe expected vs. actual behavior 4. **Execute and Validate Reproduction...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~54-~54: Please add a punctuation mark at the end of paragraph.
Context: ... Consider impacts on other parts of the system 6. Develop Fix Strategy: - Prop...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~107-~107: Please add a punctuation mark at the end of paragraph.
Context: ...formance**: Don't introduce performance regressions ## Communication Style - Be methodica...

(PUNCTUATION_PARAGRAPH_END)

.claude/agents/example-builder.md

[typographical] ~273-~273: Consider using a typographic opening quote here.
Context: ...ed) - ✅ Include all necessary files (no "etc." or "more files...") - ✅ Work from ...

(EN_QUOTES)


[typographical] ~273-~273: Consider using a typographic close quote here.
Context: ... ✅ Include all necessary files (no "etc." or "more files...") - ✅ Work from clean...

(EN_QUOTES)


[typographical] ~273-~273: Consider using a typographic opening quote here.
Context: ...clude all necessary files (no "etc." or "more files...") - ✅ Work from clean slat...

(EN_QUOTES)


[style] ~273-~273: Consider using the typographical ellipsis character here instead.
Context: ...ecessary files (no "etc." or "more files...") - ✅ Work from clean slate (no assumpt...

(ELLIPSIS)


[typographical] ~273-~273: Consider using a typographic close quote here.
Context: ...ssary files (no "etc." or "more files...") - ✅ Work from clean slate (no assumpti...

(EN_QUOTES)


[typographical] ~340-~340: Consider using a typographic opening quote here.
Context: ...Quick to read and understand - Focus on "how to run" not "how it works internally...

(EN_QUOTES)


[typographical] ~340-~340: Consider using a typographic close quote here.
Context: ...ad and understand - Focus on "how to run" not "how it works internally" - Link to...

(EN_QUOTES)


[typographical] ~340-~340: Consider using a typographic opening quote here.
Context: ... understand - Focus on "how to run" not "how it works internally" - Link to full ...

(EN_QUOTES)


[typographical] ~340-~340: Consider using a typographic close quote here.
Context: ...how to run" not "how it works internally" - Link to full documentation for detail...

(EN_QUOTES)

.claude/agents/test-automation-expert.md

[grammar] ~134-~134: Ensure spelling is correct
Context: ...ter:** - Capture exact output including lipgloss formatting, ANSI codes, trailing whites...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[typographical] ~257-~257: In American English, use a period after an abbreviation.
Context: ...nt:") } **Decision tree: Unit test vs Integration test:** Can I mock exte...

(MISSING_PERIOD_AFTER_ABBREVIATION)


[grammar] ~562-~562: Use a hyphen to join words.
Context: ...ity) 2. All error paths (catch error handling bugs) 3. **All conditional bran...

(QB_NEW_EN_HYPHEN)

.claude/agents/lint-resolver.md

[style] ~7-~7: Consider a different adjective to strengthen your wording.
Context: ...ecialist and code quality enforcer with deep knowledge of golangci-lint, custom lint...

(DEEP_PROFOUND)


[grammar] ~15-~15: Please add a punctuation mark at the end of paragraph.
Context: ...estability - Early detection of quality issues Critical Rules: 1. **Never suggest...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~32-~32: Please add a punctuation mark at the end of paragraph.
Context: ...rule exists and its importance for code quality ### 2. Resolve Violations Through Refa...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~80-~80: Consider using typographic quotation marks here.
Context: ...sn't help (CI will fail) - Clarify what "pre-existing" actually means (main branch only) - Emp...

(EN_QUOTES)


[typographical] ~83-~83: Consider using typographic quotation marks here.
Context: ...ntainability - Never make excuses about "whose fault" the lint error is - just fix it ### 5....

(EN_QUOTES)


[style] ~121-~121: To elevate your writing, try using an alternative expression here.
Context: ...und 2. Analysis: Why each violation matters for code quality 3. Refactored Code...

(MATTERS_RELEVANT)

.claude/agents/feature-development-orchestrator.md

[style] ~28-~28: ‘Clearly articulate’ might be wordy. Consider a shorter alternative.
Context: ...ant patterns Problem Definition: - Clearly articulate what problem this feature solves - Iden...

(EN_WORDINESS_PREMIUM_CLEARLY_ARTICULATE)


[grammar] ~126-~126: Please add a punctuation mark at the end of paragraph.
Context: ...ge - [ ] Run make lint to ensure code quality Phase 5: Documentation - [ ] Creat...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~163-~163: Please add a punctuation mark at the end of paragraph.
Context: ...erve existing comments unless factually incorrect Code Quality Standards: - Files mu...

(PUNCTUATION_PARAGRAPH_END)


[style] ~194-~194: Consider using the typographical ellipsis character here instead.
Context: ...make lint passes without errors - [ ] go build . && go test ./... succeeds - [ ] No //revive:disable c...

(ELLIPSIS)


[grammar] ~228-~228: Please add a punctuation mark at the end of paragraph.
Context: ... potential compatibility or maintenance concerns When you identify missing information ...

(PUNCTUATION_PARAGRAPH_END)

.claude/agents/pr-manager.md

[typographical] ~68-~68: Consider using typographic quotation marks here.
Context: ...haracters ideal) - Use imperative mood ("Add feature" not "Adds feature" or "Added feature") ...

(EN_QUOTES)


[typographical] ~68-~68: Consider using typographic quotation marks here.
Context: ... Use imperative mood ("Add feature" not "Adds feature" or "Added feature") - Clearly indicate ...

(EN_QUOTES)


[typographical] ~68-~68: Consider using typographic quotation marks here.
Context: ...od ("Add feature" not "Adds feature" or "Added feature") - Clearly indicate the primary change ...

(EN_QUOTES)


[typographical] ~72-~72: Consider using a typographic opening quote here.
Context: ...nges in the description - Examples: - "Add AWS credential rotation support" -...

(EN_QUOTES)


[typographical] ~72-~72: Consider using a typographic close quote here.
Context: ... - "Add AWS credential rotation support" - "Fix config loader crash on empty f...

(EN_QUOTES)


[typographical] ~73-~73: Consider using a typographic opening quote here.
Context: ...dd AWS credential rotation support" - "Fix config loader crash on empty files" ...

(EN_QUOTES)


[typographical] ~73-~73: Consider using a typographic close quote here.
Context: ... "Fix config loader crash on empty files" - "Update CLAUDE.md with testing guid...

(EN_QUOTES)


[typographical] ~74-~74: Consider using a typographic opening quote here.
Context: ...config loader crash on empty files" - "Update CLAUDE.md with testing guidelines...

(EN_QUOTES)


[typographical] ~74-~74: Consider using a typographic close quote here.
Context: ...Update CLAUDE.md with testing guidelines" ### 5. Description Quality Checks Befo...

(EN_QUOTES)

.claude/agents/frontend-developer.md

[grammar] ~128-~128: Please add a punctuation mark at the end of paragraph.
Context: ... - Review component usage in existing docs 3. **Can we enhance an existing compon...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~133-~133: Please add a punctuation mark at the end of paragraph.
Context: ...end with composition - Use component variants 4. **Is a plugin better than custom co...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~138-~138: Please add a punctuation mark at the end of paragraph.
Context: ...mmunity solutions - Official plugins preferred Only create new components when: -...

(PUNCTUATION_PARAGRAPH_END)


[style] ~552-~552: Consider using the typographical ellipsis character here instead.
Context: ...` ### Option 2: [Alternative solution] ... ## Accessibility Considerations - Keyb...

(ELLIPSIS)


[style] ~575-~575: Consider using the typographical ellipsis character here instead.
Context: ... changing existing) 1. Step 1 2. Step 2 ... ``` ## Success Metrics A great fronte...

(ELLIPSIS)

.claude/agents/refactoring-architect.md

[style] ~182-~182: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...NEVER delete existing comments without very strong reason.* ```go // WRONG: Deleting help...

(EN_WEAK_ADJECTIVE)

.claude/agents/security-auditor.md

[typographical] ~85-~85: Consider using typographic quotation marks here.
Context: ... community standards - Avoid unusual or "clever" security implementations - Use proven p...

(EN_QUOTES)


[grammar] ~212-~212: Please add a punctuation mark at the end of paragraph.
Context: ...s - loggercheck: Structured logging patterns **JavaScript/TypeScript quality checks...

(PUNCTUATION_PARAGRAPH_END)


[style] ~285-~285: Since ownership is already implied, this phrasing may be redundant.
Context: ...roper permissions ❌ **BAD: Rolling your own secrets storage**go // DON'T create...

(PRP_OWN)


[uncategorized] ~1213-~1213: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ponential backoff after failures **Low Priority Issues (Nice to Have):**markdown ##...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

.scratch/AGENT_ANALYSIS.md

[grammar] ~51-~51: Use a hyphen to join words.
Context: ...UPDATES Strengths: - Test-driven bug fixing approach - Mentions `cmd.NewTestK...

(QB_NEW_EN_HYPHEN)


[grammar] ~53-~53: Please add a punctuation mark at the end of paragraph.
Context: ...)` for test isolation - References mock generation Missing CLAUDE.md Context: - ❌ Sho...

(PUNCTUATION_PARAGRAPH_END)


[uncategorized] ~176-~176: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...uired ### 1. Test Strategy Architect ⭐ HIGH PRIORITY Purpose: Design comprehensive test ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~193-~193: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...gy --- ### 2. Refactoring Architect ⭐ HIGH PRIORITY Purpose: Systematic refactoring to ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~212-~212: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... issues --- ### 3. Security Auditor ⭐ MEDIUM PRIORITY Purpose: Review code for security v...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

.claude/agents/prd-writer.md

[style] ~8-~8: Consider a different adjective to strengthen your wording.
Context: ...g practices. Your expertise encompasses deep knowledge of the codebase architecture,...

(DEEP_PROFOUND)


[grammar] ~65-~65: Please add a punctuation mark at the end of paragraph.
Context: ...s/errors.go, use fmt.Errorf with %w for chaining 4. **Ensure Code Quality and Maintaina...

(PUNCTUATION_PARAGRAPH_END)


[style] ~70-~70: Consider using a different verb for a more formal wording.
Context: ...inimize use of lint ignore directives - fix issues properly - Preserve existing ...

(FIX_RESOLVE)

.claude/agents/ci-failure-resolver.md

[typographical] ~30-~30: Consider using a typographic opening quote here.
Context: ...tify all test failures by searching for "FAIL:" markers and panic stack traces ...

(EN_QUOTES)


[typographical] ~30-~30: Consider using a typographic close quote here.
Context: ...ll test failures by searching for "FAIL:" markers and panic stack traces - Cat...

(EN_QUOTES)


[grammar] ~48-~48: Please add a punctuation mark at the end of paragraph.
Context: ...oduction code paths and not duplicating logic 4. Propose High-Quality Fixes -...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~63-~63: Use a hyphen to join words.
Context: ...FromSlash()appropriately - For line ending issues: Usebufio.Scanner` or no...

(QB_NEW_EN_HYPHEN)


[grammar] ~66-~66: Please add a punctuation mark at the end of paragraph.
Context: ...ests and os.MkdirTemp() in production code 6. Respect GitHub API Rate Limits ...

(PUNCTUATION_PARAGRAPH_END)


[style] ~139-~139: Consider using a different verb for a more formal wording.
Context: ...fixes that only make tests pass without fixing the underlying issue - NEVER reduce...

(FIX_RESOLVE)


[grammar] ~145-~145: Please add a punctuation mark at the end of paragraph.
Context: ...at fixes maintain code quality and test coverage ## Success Criteria You have successf...

(PUNCTUATION_PARAGRAPH_END)


[style] ~158-~158: You have used the passive voice repeatedly in nearby sentences. To make your writing clearer and easier to read, consider using active voice.
Context: ...improved 8. Code quality standards have been upheld You are the guardian of CI pipeline he...

(REP_PASSIVE_VOICE)

.claude/agents/pr-review-resolver.md

[typographical] ~65-~65: Consider using typographic quotation marks here.
Context: ...* (HTTP 403, 429, or message containing "rate limit"): - Extract reset timestamp: `gh api ...

(EN_QUOTES)


[typographical] ~67-~67: Consider using a typographic opening quote here.
Context: ...estamp '+%Y-%m-%d %H:%M:%S'(macOS) ordate -d "@$timestamp"` (Linux) - Log clear wait...

(EN_QUOTES)


[typographical] ~318-~318: Consider using a typographic opening quote here.
Context: ...ng (PRIORITY) ### Special Attention to "Prompt for AI Agents" Sections CodeRabbi...

(EN_QUOTES)


[typographical] ~318-~318: Consider using a typographic close quote here.
Context: ...ecial Attention to "Prompt for AI Agents" Sections CodeRabbit review comments oft...

(EN_QUOTES)


[typographical] ~319-~319: Consider using a typographic opening quote here.
Context: ...ts often contain a details block titled "Prompt for AI Agents" or similar. This s...

(EN_QUOTES)


[typographical] ~319-~319: Consider using a typographic close quote here.
Context: ...tails block titled "Prompt for AI Agents" or similar. This section provides: - Mo...

(EN_QUOTES)


[grammar] ~323-~323: Please add a punctuation mark at the end of paragraph.
Context: ...rioritize and follow these instructions precisely** ### CodeRabbit Comment Analysis Work...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~328-~328: Consider using a typographic opening quote here.
Context: ...ack** from the comment body 2. Locate "Prompt for AI Agents" section if prese...

(EN_QUOTES)


[typographical] ~328-~328: Consider using a typographic close quote here.
Context: ...t body 2. Locate "Prompt for AI Agents" section if present 3. **Cross-referen...

(EN_QUOTES)


[grammar] ~337-~337: Please add a punctuation mark at the end of paragraph.
Context: ...spectfully explain why feedback doesn't apply ## Resolution Process ### Phase 1: Di...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~368-~368: Consider using a typographic opening quote here.
Context: ...e what was changed and why - Format: "fix: [brief description] (addresses revi...

(EN_QUOTES)


[typographical] ~368-~368: Consider using a typographic close quote here.
Context: ...scription] (addresses review comment #N)" 4. Track progress: Maintain checkli...

(EN_QUOTES)


[typographical] ~381-~381: Consider using a typographic opening quote here.
Context: ...ic code changes if helpful - Format: "This was addressed in commit [SHA]. [Bri...

(EN_QUOTES)


[typographical] ~381-~381: Consider using a typographic close quote here.
Context: ...f explanation of fix]. Please re-review." 3. Final validation: - Ensure al...

(EN_QUOTES)


[grammar] ~385-~385: Please add a punctuation mark at the end of paragraph.
Context: ...s were introduced - Confirm CI/tests pass ## Quality Assurance Standards ### Ev...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~393-~393: Please add a punctuation mark at the end of paragraph.
Context: ...uest clarification from reviewer before implementing ### When to Push Back Respectfully If ...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~435-~435: Consider using a typographic opening quote here.
Context: ...ve operations - ✓ Prioritize CodeRabbit "Prompt for AI Agents" sections - ✓ Creat...

(EN_QUOTES)


[typographical] ~435-~435: Consider using a typographic close quote here.
Context: ...oritize CodeRabbit "Prompt for AI Agents" sections - ✓ Create comprehensive plans...

(EN_QUOTES)

.scratch/FINAL_UPDATES_SUMMARY.md

[grammar] ~11-~11: Please add a punctuation mark at the end of paragraph.
Context: ....Args) - Works with subtests and nested tests Sandbox: `testhelpers.SetupSandbox...

(PUNCTUATION_PARAGRAPH_END)


[style] ~61-~61: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...+) ALWAYS use t.Chdir() instead of os.Chdir() in tests ```go // CORRECT: Automat...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~61-~61: Please add a punctuation mark at the end of paragraph.
Context: ... use t.Chdir() instead of os.Chdir() in tests** ```go // CORRECT: Automatic cleanup ...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~202-~202: In American English, use a period after an abbreviation.
Context: ...uiring isolated filesystem ### Sandbox vs TestKit - TestKit: Cleans RootCmd s...

(MISSING_PERIOD_AFTER_ABBREVIATION)


[typographical] ~250-~250: Consider using typographic quotation marks here.
Context: ...e Sparingly (10%) Integration tests ("smoke tests") are for: - End-to-end CLI behavior v...

(EN_QUOTES)


[typographical] ~327-~327: Consider using typographic quotation marks here.
Context: ... formatting bug - Tests fail in CI with "snapshot mismatch" ⚠️ Question before regenerating: -...

(EN_QUOTES)

.scratch/ADDITIONAL_CONTEXT.md

[typographical] ~13-~13: Consider using typographic quotation marks here.
Context: ...- Difference between integration tests ("smoke tests") vs pure Go tests - Preference for pure...

(EN_QUOTES)


[grammar] ~41-~41: Please add a punctuation mark at the end of paragraph.
Context: ... with Refactoring Architect for complex issues Where to Add: - lint-resolver.md...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~44-~44: Consider using a typographic opening quote here.
Context: ...ready has this but could strengthen the "propose plan first" guidance ### 4. CI/...

(EN_QUOTES)


[typographical] ~44-~44: Consider using a typographic close quote here.
Context: ...could strengthen the "propose plan first" guidance ### 4. CI/CD Debugger Concept...

(EN_QUOTES)


[typographical] ~49-~49: Consider using typographic quotation marks here.
Context: ...(Fix Agent) New Agent Concept: The "fix" instructions suggest a CI/CD debugging ...

(EN_QUOTES)


[grammar] ~94-~94: Please add a punctuation mark at the end of paragraph.
Context: ...Use for:* Tests that need environment variables ```go func TestEnvVarHandling(t *testin...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~110-~110: Please add a punctuation mark at the end of paragraph.
Context: ...er t.Chdir() and t.Setenv() over manual management** ``` #### Add TestKit Deep Dive Secti...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~239-~239: Consider using typographic quotation marks here.
Context: ... Smoke Tests (10%) Integration tests ("smoke tests") are for: - End-to-end CLI behavior -...

(EN_QUOTES)

.claude/agents/changelog-writer.md

[grammar] ~62-~62: Please add a punctuation mark at the end of paragraph.
Context: ...umentation** for complete configuration details ### 2. Atmos Core Developers (Less Com...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~66-~66: Consider using a typographic opening quote here.
Context: ...ernal architectural improvements (e.g., "Command Registry Pattern") - Refactoring...

(EN_QUOTES)


[typographical] ~66-~66: Consider using a typographic close quote here.
Context: ...vements (e.g., "Command Registry Pattern") - Refactoring efforts that improve mai...

(EN_QUOTES)


[grammar] ~69-~69: Please add a punctuation mark at the end of paragraph.
Context: ...ments - CI/CD or testing infrastructure changes Tag distinction: User-facing posts...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~77-~77: Consider using typographic quotation marks here.
Context: ...Avoid Hyperbole**: Not every feature is "revolutionary" or "game-changing." Focus on **what mak...

(EN_QUOTES)


[typographical] ~77-~77: Consider using a typographic opening quote here.
Context: ...Not every feature is "revolutionary" or "game-changing." Focus on **what makes th...

(EN_QUOTES)


[typographical] ~77-~77: Consider using a typographic close quote here.
Context: ...re is "revolutionary" or "game-changing." Focus on what makes this important ...

(EN_QUOTES)


[typographical] ~85-~85: Consider using typographic quotation marks here.
Context: ...r-Centric Voice**: Write as a peer. Use "we" and "you" naturally. Acknowledge real c...

(EN_QUOTES)


[typographical] ~85-~85: Consider using typographic quotation marks here.
Context: ... Voice**: Write as a peer. Use "we" and "you" naturally. Acknowledge real challenges ...

(EN_QUOTES)


[grammar] ~115-~115: Please add a punctuation mark at the end of paragraph.
Context: ... affected by breaking changes - Keep it concise ### Examples (Keep Minimal) Show real-...

(PUNCTUATION_PARAGRAPH_END)


[typographical] ~170-~170: Consider using typographic quotation marks here.
Context: ...u removed unnecessary superlatives like "revolutionary" or "amazing"? 10. ✅ Migration guide...

(EN_QUOTES)


[typographical] ~170-~170: Consider using typographic quotation marks here.
Context: ...ry superlatives like "revolutionary" or "amazing"? 10. ✅ Migration guide: Is it inclu...

(EN_QUOTES)

🪛 markdownlint-cli2 (0.18.1)
.claude/agents/cli-developer.md

501-501: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


519-519: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


677-677: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


1233-1233: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1247-1247: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1265-1265: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1286-1286: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1300-1300: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1311-1311: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1323-1323: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.claude/agents/bug-investigator.md

94-94: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)


95-95: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)


96-96: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)


97-97: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)


98-98: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)

.claude/agents/documentation-writer.md

255-255: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


268-268: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


280-280: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


321-321: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


347-347: Multiple headings with the same content

(MD024, no-duplicate-heading)


354-354: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


378-378: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


400-400: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


416-416: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


433-433: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.claude/agents/example-builder.md

56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


127-127: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


169-169: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


363-363: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


397-397: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


411-411: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


424-424: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


463-463: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


471-471: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


479-479: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


487-487: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.claude/agents/feature-development-orchestrator.md

98-98: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


105-105: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


112-112: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


119-119: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


128-128: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


136-136: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


145-145: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

.claude/agents/pr-manager.md

36-36: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)

.claude/agents/frontend-developer.md

94-94: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


123-123: Bare URL used

(MD034, no-bare-urls)


124-124: Bare URL used

(MD034, no-bare-urls)


417-417: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


454-454: Bare URL used

(MD034, no-bare-urls)


455-455: Bare URL used

(MD034, no-bare-urls)


456-456: Bare URL used

(MD034, no-bare-urls)


457-457: Bare URL used

(MD034, no-bare-urls)


458-458: Bare URL used

(MD034, no-bare-urls)


577-577: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.claude/agents/refactoring-architect.md

242-242: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


255-255: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


269-269: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


278-278: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


286-286: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


296-296: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


305-305: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


330-330: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


356-356: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


414-414: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


460-460: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


471-471: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


488-488: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


503-503: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.claude/agents/security-auditor.md

111-111: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


163-163: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


209-209: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


276-276: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


356-356: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.scratch/AGENT_ANALYSIS.md

253-253: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


272-272: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


285-285: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.claude/agents/prd-writer.md

56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


127-127: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

CLAUDE.md

375-375: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

.scratch/FINAL_UPDATES_SUMMARY.md

61-61: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


83-83: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


146-146: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


147-147: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


219-219: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


276-276: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


290-290: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


392-392: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


402-402: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


453-453: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
  • GitHub Check: Lint (golangci)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Analyze (go)
  • GitHub Check: Build (linux)
  • GitHub Check: Build (macos)
  • GitHub Check: Build (windows)
  • GitHub Check: Run pre-commit hooks
  • GitHub Check: Review Dependency Licenses
  • GitHub Check: autofix
  • GitHub Check: Lint (golangci)
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

@codecov
Copy link

codecov bot commented Oct 31, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.93%. Comparing base (f12f63d) to head (401a7eb).
⚠️ Report is 5 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1733      +/-   ##
==========================================
+ Coverage   68.70%   68.93%   +0.22%     
==========================================
  Files         381      381              
  Lines       34822    34930     +108     
==========================================
+ Hits        23925    24079     +154     
+ Misses       8656     8588      -68     
- Partials     2241     2263      +22     
Flag Coverage Δ
unittests 68.93% <ø> (+0.22%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 9 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@mergify
Copy link

mergify bot commented Nov 3, 2025

💥 This pull request now has conflicts. Could you fix it @osterman? 🙏

@mergify mergify bot added the conflict This PR has conflicts label Nov 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conflict This PR has conflicts needs-cloudposse Needs Cloud Posse assistance size/xl Extra large size PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants