implement issue12#14
Merged
Merged
Conversation
…date the test cases.
Contributor
There was a problem hiding this comment.
Pull Request Overview
Adds support for a new cursorRuleType field in frontmatter to distinguish four Cursor rule behaviors (always, manual, specificFiles, intelligently). The PR updates parsing logic, markdown generation, tests, and documentation to implement the Issue #12 specification.
- Introduce
cursorRuleTypeinRuleFrontmatterand propagate it through parsing/generation - Enhance
parseCursorConfigurationandconvertCursorMdcFrontmatterto classify MDC/legacy rules into four types - Update
generateCursorMarkdownand its tests to output the new frontmatter format - Revise core validation and add doc/README updates for Cursor rule types
Reviewed Changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/types/rules.ts | Add optional cursorRuleType to RuleFrontmatter |
| src/parsers/cursor.ts | Implement convertCursorMdcFrontmatter, update parsing |
| src/parsers/cursor.test.ts | Update parsing tests to expect new rule classifications |
| src/generators/rules/cursor.ts | Rewrite generateCursorMarkdown, add determineCursorRuleType |
| src/generators/rules/cursor.test.ts | Extend generator tests for all four rule types |
| src/core/parser.ts | Allow empty description (relax validation) |
| README.md / README.ja.md | Document cursorRuleType field and behavior |
| CONTRIBUTING.md / CONTRIBUTING.ja.md | Note Cursor parser supports four rule types |
Comments suppressed due to low confidence (4)
src/parsers/cursor.ts:68
- [nitpick] Each return in
convertCursorMdcFrontmatterrepeatsrootandtargets. Extract a base object with{ root: false, targets: ["*"] }and spread it into each branch to reduce duplication.
return {
src/generators/rules/cursor.ts:95
- The return type of
determineCursorRuleTypeis declared asstring. It should be the union"always"|"manual"|"specificFiles"|"intelligently"(e.g.RuleFrontmatter['cursorRuleType']) to enforce type safety.
function determineCursorRuleType(
src/parsers/cursor.ts:33
- [nitpick] The regex for unquoted glob patterns is complex and brittle. Consider simplifying it or using a YAML loader schema that accepts unquoted strings, and add inline comments explaining each step.
// But exclude array literals (starting with [ or already quoted strings)
CONTRIBUTING.md:105
- [nitpick] The comment about supporting four rule types is misaligned under the file tree. Move it to the end of the
cursor.tsline so it clearly annotates that file.
│ │ │ # Supports 4 rule types: always, manual, specificFiles, intelligently
Owner
|
@arrowkato Thank you! |
Contributor
Author
|
Thank you for your review! |
2 tasks
8 tasks
dyoshikawa
added a commit
that referenced
this pull request
Apr 29, 2026
…ode/cline/qwencode Addresses 18 reviewer findings raised on PR #1338. Highlights: - #1 (critical): AugmentCode non-bash categories now fail-closed. A single deny rule in `read`/`edit`/`write`/`webfetch`/`websearch` collapses the whole tool to a catch-all `deny` entry; non-`*` allow/ask patterns are dropped with an aggregated warning instead of being silently downgraded to a catch-all `allow` that would shadow a deny. - #2 (high): `toolPermissions` are sorted to make AugmentCode's first-match-wins evaluation safe — entries with `shellInputRegex` come before catch-alls, longer regex first, with deny < ask-user < allow as the tiebreaker. - #5 (mid): existing `launch-process` deny entries are preserved across regeneration so a user-added shell deny rule cannot be silently downgraded; non-deny launch-process entries are still owned by rulesync. - #3 (mid): Qwencode generation uses `readFileContentOrNull` (no `readOrInitializeFileContent`) so dry-run does not create the `.qwen/` directory. - #4 (mid): Kilo schema parsing is deferred and respects `params.validate`, so `forDeletion` and dry-run construction never throw on permissive input. - #7, #16 (mid/low): Cline drops non-bash / ask rules at `logger.error` level (rather than warn) and surfaces a defensive warn on allow/deny pattern collisions. - #8, #13 (mid/low): Qwencode pattern parser uses the LAST `)` so nested parentheses (e.g. `Bash(echo (a))`) round-trip; malformed entries warn and fall back to `*`. - #9 (low): Augment non-bash warnings are aggregated once per category. - #11 (low): Kilo's wholesale-replace of the `permission` object is documented in `docs/reference/file-formats.md`. - #10, #6 (low): glob→regex behaviour and round-trip caveats are documented. - #14 (low): `mergedPermissions` is typed as `{ allow?: string[]; ask?: string[]; deny?: string[]; [k: string]: unknown }`. - #15 (low): redundant Qwencode global-mode equivalence assert removed. - #17 (low): `permissions-processor.test.ts` gains `loadToolFiles` cases for AugmentCode, Cline, Kilo, and Qwencode. Deferred: - #12 (kilo home-mock migration): the existing kilo global-mode test already passes `outputRoot` directly and does not reach `getHomeDirectory()`, so introducing the home-mock pattern adds only ceremony without coverage. - #18 (tool-name-mapping helper extraction): postponed to keep this fix focused and to avoid touching files outside the permissions feature. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
resolve #12
implemented the specifications #12 (comment)