Conversation
README.md
Outdated
| aicm acts as a bridge between your configuration and your AI tools. It accepts Cursor's `.mdc` format and can transform it for other environments: | ||
| | Preset | Environment | Instructions | Skills | Subagents | MCP | Hooks | | ||
| | ------------- | ----------- | ------------ | ----------------- | ------------------- | -------------------- | ---------- | | ||
| | `cursor` | Cursor IDE | `AGENTS.md` | `.agents/skills/` | `.cursor/agents/` | `.cursor/mcp.json` | `.cursor/` | |
There was a problem hiding this comment.
Maybe I didn't understand something but shouldn't Skills directory should be .cursor/skills/ instead of the agents parent dict?
There was a problem hiding this comment.
The industry is moving towards a single .agents/skills directory, this is intentional.
https://x.com/embirico/status/2018415923930206718
agentskills/agentskills#15 (comment)
https://x.com/leerob/status/2018770085956010119
MIGRATION.md
Outdated
|
|
||
| | v0.x | v1.0 | | ||
| | ------------------------------ | ---------------------------------- | | ||
| | `rules/*.mdc` | `instructions/*.md` | |
There was a problem hiding this comment.
Our rules are Apply Intelligently which makes them more of skills.
So maybe it worth mentioning this caveat, probably there will be users that won't spot the difference
There was a problem hiding this comment.
"Apply Intelligently" rules are supported in Skills - https://cursor.com/docs/context/skills#migrating-rules-and-commands-to-skills
The only caveat which should be mentioned (you're right!) is that we won't support Apply to Specific Files rules. The options as I see them:
- Add specific support for them - not great because it's too cursor specific and won't necessarily withstand the standartization process.
- Wait for some standard to be added to skills or to some other new concept. In the meanwhile this can be solve via a pattern of explaining the agent to read a certain document in for specific type of files, or in the new API, create an instruction file which is dynamically loaded and add description mentioning to read for a certain type of files (for example, typescript rules relevant to **/*.ts files).
There was a problem hiding this comment.
Thanks for the detailed explanation but actually, I was referring to a different caveat 😖 I wrote it badly.
I'm worried users will mistakenly migrate their Apply Intelligently rules into AGENTS.md.
We need to make sure the distinction is clear: AGENTS.md should technically only replace the Apply Always rules. If it's Apply Intelligently, it belongs in Skills. Otherwise, we risk users cluttering their global context.
There was a problem hiding this comment.
Oh I see, that's a good point, but to be honest I think having a docs/TESTING.md file which is being mentioned in the AGENTS.md is a very similar concept to Apply Intelligently, even closer in functionality than a skill. Skill is invokable by the user (e.g., /skill) while the intelligently applied rule is not really.
so I think it will be good if I'll mention these 2 options as potential options for migration and let the user choose.
What do you think?
|
Is there a timeline for this? |
No official timeline, but ideally I'd like to merge this in 1-2 weeks in case I get agreement from most users. |
|
Hey, looks awesome! I have a few questions about the new version Should we really commit
|
|
@YoavTarazyWix thanks for the great review, you have some great points!
Good callout. I was thinking about this in terms of two possible workflows:
I think option (2) aligns better with the mental model of “generated vs source” files, even if it requires a bit more explanation in the README. We could explicitly document this pattern so teams understand where to make changes and why.
I agree, I'll add such example right after this is merged and released.
You're mainly talking about "apply intelligently" rules right? They can be either skills or progressively discoloured instruction files (see #106 (comment)). I'll make sure to include this in the migration guide.
Interesting point! Technically speaking the aicm managed content is generated at the end of the file, which I think suite 3rd party content well. After the comments are generated it won't move unless you'll delete it and regenerate, so you can manually control its location. A point to consider is what to do where there are both 3rd party instructions and local instructions. A good default would be to generate the local one first but we can also introduce a configuration to control this. Since it's quite advanced I think we can definitely open a separate issue to discuss and decide what to do there. |
Reflections on the designAfter some reflection, I have a few important design questions about AICM that I’m still uncertain about, especially given recent changes in the ecosystem. When AICM was originally created, Claude Code Plugins did not exist. Today, plugins solve much of the same distribution problem by providing a clean mechanism for sharing skills, commands, subagents, hooks, and MCP servers. However, plugins have two important limitations:
One major advantage of the plugin approach is its simplicity. The plugin itself is installed into a cache directory, while the repository only contains a one-line reference in This raises an important question: Why don’t plugins allow managing persistent context? My best explanation is that persistent instructions are intentionally reserved for repository owners. Allowing third-party plugins to “plant” context into every agent interaction would introduce a significant trust and security risk and could easily be abused. This level of control is likely meant to stay with repository maintainers, who are expected to carefully own everything placed in The Problem With Generated Output in AICM TodayIn AICM’s current design, running
Because these files are generated artifacts, the common recommendation is to place them in This creates a major usability issue:
Two Core Design Questions1. Should AICM manage
|
|
@ranyitz Here's where I land on those questions:
For the workflow around updates, I think two complementary skills would be valuable:
To summarize my take: AICM's role as a bridge is still needed until the plugin ecosystem matures across all targets. The generated files should be ephemeral (.gitignored), and the update/contribution flow should be handled through skills that integrate naturally into the developer's IDE workflow. |
|
@eladbej thanks for the response.
The question we should ask is whether we want to allow teams to inject persistent context, the answer to that is not trivial to me, because it both adds inherent complexity and because it essentially encourages context bloat, which is something I'm generally against. I think that the fact Claude Code doesn't support it, may provide some validation to this idea.
Regarding About skills, here we have a choice, we either not committing them, but require a setup command to have an agent ready repo, or do commit them, but we'd have to setup some periodic process that fetches the latest rules and create a PR with them. It reminds me of dependabot or renovate but much simpler. You could setup a github action that runs once a day, pull the latest changes and create a PR if there are changes in source skills. We actually don't have to be opinionated here, we can allow both flows and let the developer choose their preferred way of working with it. Regarding MCP configurations, we either teach developers to use local aicm preset to manage them and handle the merge on installation, but it does introduce a lot of complexity as well, I would actually consider an approach when you want to see when a new MCP server is being added, here the approached mentioned above with the lock file and periodic PRs that update it works well. |
v1.0 Rewrite
Major rewrite shifting from Cursor-specific
.mdcrules to an industry-standard instructions system.Breaking Changes
.mdcfiles inrules/replaced with.mdfiles ininstructions/, output inlined intoAGENTS.md/CLAUDE.mdinstead of individual.cursor/rules/filesopencodeandcodextargetsclaudetarget renamed toclaude-codeNew Features
inline: true/falsecontrols whether content is inlined or linked with progressive disclosureDue to so many changes in functionality, the codebase has been heavily refactored while relaying on the e2e test suite to verify the behavior.
To review, start from the new README and go over the migration guide