Skip to content

Add OpenSpec proposal for provider ignore files#157

Merged
soorya-u merged 2 commits into
mainfrom
feature/feat/ignore-files-proposal
May 26, 2026
Merged

Add OpenSpec proposal for provider ignore files#157
soorya-u merged 2 commits into
mainfrom
feature/feat/ignore-files-proposal

Conversation

@soorya-u
Copy link
Copy Markdown
Owner

@soorya-u soorya-u commented May 26, 2026

Summary by CodeRabbit

  • Documentation
    • Added comprehensive design and specification documentation for a new ignore patterns feature, enabling users to configure and automatically deploy provider-specific ignore files during initialization and deployment.
    • Specified requirements for template rendering, per-provider configuration, and integration with the deployment pipeline across 20 supported providers.

Review Change Stack

@vercel
Copy link
Copy Markdown

vercel Bot commented May 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dotagents Ready Ready Preview, Comment May 26, 2026 9:37am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 26, 2026

Warning

Review limit reached

@soorya-u, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 14 minutes and 8 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 71e21ab4-034d-42bc-a356-443a9d535294

📥 Commits

Reviewing files that changed from the base of the PR and between 88e11f5 and 8241c48.

📒 Files selected for processing (7)
  • openspec/changes/add-provider-ignore-files/design.md
  • openspec/changes/add-provider-ignore-files/proposal.md
  • openspec/changes/add-provider-ignore-files/specs/deploy-pipeline/spec.md
  • openspec/changes/add-provider-ignore-files/specs/ignore-feature/spec.md
  • openspec/changes/add-provider-ignore-files/specs/ignore-init-scaffold/spec.md
  • openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md
  • openspec/changes/add-provider-ignore-files/tasks.md
📝 Walkthrough

Walkthrough

This PR introduces comprehensive specification and design documentation for a new ignore feature in dotagents. It defines feature type contracts, deployment and init behavior, provider template requirements, and a complete implementation checklist to enable automated provider-specific ignore file generation and management.

Changes

Provider Ignore Files Feature Specification

Layer / File(s) Summary
Feature Proposal and Design
openspec/changes/add-provider-ignore-files/design.md, proposal.md
High-level design and proposal introduce the ignore feature as a first-class dotagents capability alongside commands, instructions, mcp, and skills. The design covers config sourcing (global [ignore] table plus per-provider overrides), singleton per-provider file rendering via Handlebars templates, init scaffolding of default patterns, and migration strategy with stated risks and open questions.
Feature Type Specification and Config Integration
openspec/changes/add-provider-ignore-files/specs/ignore-feature/spec.md
Defines the Ignore variant in the Feature enum and IgnoreFeature struct implementing FeatureTrait, including newline-separated to_string()/from_string() serialization, pattern loading from [ignore] table in config.toml, Features struct integration with ignore: Option<FeatureSettings>, deployment gating when "ignore" is in the features array, and per-provider disable support via [providers.<name>.ignore].disabled.
Deployment and Init Scaffolding Behavior
openspec/changes/add-provider-ignore-files/specs/deploy-pipeline/spec.md, specs/ignore-init-scaffold/spec.md
Deploy pipeline writes per-provider ignore files (.ignore / .aiignore) with directory creation, gitignore fence tracking for deploy/undeploy, single-phase template rendering with variable substitution, and empty pattern handling. Init wizard adds Ignore feature selection in TUI (pre-selected), CLI feature flags, default pattern scaffolding at .dotagents/ignore, and --no-ignore flag support.
Provider Template Requirements and Wiring
openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md
Specifies shared ignore.hbs Handlebars template for rendering newline-separated patterns with variable interpolation, per-provider provider.toml configuration sections ([providers.<slug>.ignore]) with template and target path definitions, and registry.json SHA-256 checksum updates for ignore.hbs across 20+ providers.
End-to-End Implementation Checklist
openspec/changes/add-provider-ignore-files/tasks.md
Comprehensive task breakdown: core feature implementation (enum variant, struct, config plumbing), deploy pipeline wiring (renderer, gitignore fence, feature gating), provider templates and config generation for each provider, init integration (TUI, flags, default patterns, scaffolding), unit/e2e/manual testing, and final verification checks.
Project Metadata
openspec/changes/add-provider-ignore-files/.openspec.yaml
OpenSpec metadata recording schema: spec-driven and created: 2026-05-26.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related issues

  • soorya-u/dotagents#142: Proposes the same IgnoreFeature and per-provider ignore file deployment (with provider-specific ignore template files like .clineignore/.gooseignore), directly addressing the same feature objectives.

Possibly related PRs

  • soorya-u/dotagents#29: Main PR's deploy specs explicitly extend the dotagents-managed .gitignore fence for deployed ignore file paths, which overlaps with the retrieved PR's gitignore-deployed-files proposal that defines that same fence mechanism.

  • soorya-u/dotagents#60: Main PR's specs integrate with the dotagents-managed .gitignore fence (deploy/undeploy tracking), which directly relates to the fence/cleanup behavior refactored in PR #60.

Poem

🐰 A feature so fine, to ignore what's not mine,
Templates for each provider in neat, ordered line,
Config and deploy, scaffolding with joy,
Spec-driven design, ignore files deployed—oh boy! 🎉

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding OpenSpec documentation files for a provider ignore files feature.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/feat/ignore-files-proposal

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
Copy Markdown

@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: 5

🧹 Nitpick comments (1)
openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md (1)

4-4: ⚡ Quick win

Avoid hardcoding provider count in normative requirement text.

“all 20 providers” is likely to drift. Prefer “all supported providers” and keep concrete counts in non-normative docs/checklists.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md`
at line 4, Replace the hardcoded provider count in the normative requirement:
update the sentence that references "all 20 providers" to say "all supported
providers" instead, keeping the rest of the requirement intact (i.e., the system
SHALL provide `ignore.hbs` Handlebars templates for all supported providers and
templates SHALL render patterns as newline-separated entries); ensure the change
is applied to the `ignore.hbs` templates requirement text in the spec so counts
remain only in non-normative docs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@openspec/changes/add-provider-ignore-files/design.md`:
- Line 31: The config currently allows two ambiguous shapes for per-provider
ignores ([providers.<name>.ignore.variables] vs a dedicated patterns field)
without deterministic precedence; decide and document a single canonical
behavior (e.g., prefer explicit patterns field over .ignore.variables, or treat
coexistence as an error), update the schema to forbid ambiguous combinations,
and implement/adjust the parser and validation logic (the code that parses
[ignore] and providers.<name>.ignore.*) to enforce that rule and return a clear
validation error when both forms are supplied or to merge them deterministically
if you choose merging; update docs to state the chosen precedence and expected
shape.

In `@openspec/changes/add-provider-ignore-files/specs/ignore-feature/spec.md`:
- Around line 41-99: Add normative requirements and scenarios to specify
per-provider ignore overrides: define the shape of [providers.<name>.ignore]
(supports an optional patterns = [..] array and optional disabled = true/false),
define merge/precedence semantics (when provider.patterns is present the deploy
pipeline SHALL merge global [ignore].patterns followed by provider.patterns,
treating provider entries as additional and de-duplicating by exact match; if
provider.patterns is an empty array that means “no provider-specific patterns”
and still results in only global patterns unless disabled is true; when disabled
= true the provider SHALL not write any ignore file regardless of global or
provider.patterns), and add concrete scenarios (provider supplies patterns,
provider supplies empty patterns, provider supplies disabled = true, provider
omits ignore section) to spec.md to make behavior deterministic for implementers
and tests.

In
`@openspec/changes/add-provider-ignore-files/specs/ignore-init-scaffold/spec.md`:
- Around line 36-39: Add an explicit scenario to the init spec that defines flag
precedence when both `--no-ignore` and `--features ignore` are passed (e.g.,
"WHEN `dotagents init --no-ignore --features ignore` is run" and "THEN no ignore
patterns file SHALL be created"), clearly stating that `--no-ignore` takes
precedence; also duplicate this precedence scenario for the alternate location
that describes `--features ignore` (the second scenario referenced) so both
places unambiguously define the behavior.

In
`@openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md`:
- Around line 15-20: The spec currently only asserts the `template` field for
the opencode scenario; update the acceptance criteria so every provider test
checks both `providers.<slug>.ignore.template` and
`providers.<slug>.ignore.target` when parsing provider.toml. Concretely, add a
generic scenario or add per-provider "SHALL include `[providers.<slug>.ignore]`
with `template` pointing to <expected>`" assertions alongside the existing
`target` checks (reference the `providers.<slug>.ignore`, `template`, `target`,
and `provider.toml` symbols) so the requirement "must include both `template`
and `target`" is validated for all providers.

In `@openspec/changes/add-provider-ignore-files/tasks.md`:
- Around line 40-41: Add an explicit checklist item (e.g., new step "3.21 Update
provider registry checksums") to Section 3 so maintainers update provider
registry checksums whenever adding ignore.hbs or changing provider config
entries; specifically mention updating provider.toml via the
[providers.<slug>.ignore] section and recalculating/publishing the provider
registry checksum so metadata validation passes after template changes.

---

Nitpick comments:
In
`@openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md`:
- Line 4: Replace the hardcoded provider count in the normative requirement:
update the sentence that references "all 20 providers" to say "all supported
providers" instead, keeping the rest of the requirement intact (i.e., the system
SHALL provide `ignore.hbs` Handlebars templates for all supported providers and
templates SHALL render patterns as newline-separated entries); ensure the change
is applied to the `ignore.hbs` templates requirement text in the spec so counts
remain only in non-normative docs.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9daba757-b644-484d-92f6-7da133544021

📥 Commits

Reviewing files that changed from the base of the PR and between 624a3b0 and 88e11f5.

📒 Files selected for processing (8)
  • openspec/changes/add-provider-ignore-files/.openspec.yaml
  • openspec/changes/add-provider-ignore-files/design.md
  • openspec/changes/add-provider-ignore-files/proposal.md
  • openspec/changes/add-provider-ignore-files/specs/deploy-pipeline/spec.md
  • openspec/changes/add-provider-ignore-files/specs/ignore-feature/spec.md
  • openspec/changes/add-provider-ignore-files/specs/ignore-init-scaffold/spec.md
  • openspec/changes/add-provider-ignore-files/specs/ignore-provider-templates/spec.md
  • openspec/changes/add-provider-ignore-files/tasks.md

Comment thread openspec/changes/add-provider-ignore-files/design.md Outdated
Comment thread openspec/changes/add-provider-ignore-files/specs/ignore-feature/spec.md Outdated
Comment thread openspec/changes/add-provider-ignore-files/specs/ignore-init-scaffold/spec.md Outdated
Comment thread openspec/changes/add-provider-ignore-files/tasks.md
- Replace [ignore].patterns config table with .dotagents/.agentignore file
- Limit per-provider ignore config to disabled=true only
- Remove --no-ignore init flag; keep --features ignore
- Rename init scaffold file from .dotagents/ignore to .dotagents/.agentignore
- Use "supported providers" instead of "20 providers" throughout specs
@soorya-u soorya-u merged commit 982e6aa into main May 26, 2026
10 checks passed
@soorya-u soorya-u deleted the feature/feat/ignore-files-proposal branch May 26, 2026 09:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant