This is a revised take on my first PR, #31 .
Right now autoskills grows through one shared file: skills-map.mjs.
That means unrelated contributions end up competing on the same authoring surface. As support grows, the file becomes harder to review, easier to conflict on, and easier to accidentally overwrite during rebases or manual conflict resolution.
The issue is not the runtime contract itself. The issue is that the runtime artifact is also the main authoring surface.
Before
contributor
-> edits skills-map.mjs directly
-> touches shared global map
-> broad diff / merge pressure
-> runtime consumes the same file
Before API
import {
SKILLS_MAP,
COMBO_SKILLS_MAP,
FRONTEND_PACKAGES,
FRONTEND_BONUS_SKILLS,
WEB_FRONTEND_EXTENSIONS,
AGENT_FOLDER_MAP,
} from './skills-map.mjs'
Before repo shape
packages/autoskills/
skills-map.mjs
lib.mjs
index.mjs
Describe the solution you'd like
Split authoring for technologies and combos into small source records, then build the existing skills-map.mjs from those records.
The runtime stays the same. lib.mjs can keep consuming skills-map.mjs exactly as it does today.
After DX
Add support for python
-> add registry/technologies/python.mjs
-> validate registry
-> build skills-map.mjs
-> commit one local record + generated output
-> narrower review surface
After API
import {
SKILLS_MAP,
COMBO_SKILLS_MAP,
FRONTEND_PACKAGES,
FRONTEND_BONUS_SKILLS,
WEB_FRONTEND_EXTENSIONS,
AGENT_FOLDER_MAP,
} from './skills-map.mjs'
No runtime API change. The proposal only changes how skills-map.mjs is authored and validated.
After repo shape
packages/autoskills/
registry/
technologies/
combos/
frontend/
agents/
scripts/
validate-registry.mjs
build-skills-map.mjs
skills-map.mjs
lib.mjs
index.mjs
Describe alternatives you've considered
The first alternative was my original PR, #31 , which introduced an indexed runtime registry. I still think the direction was valid, but the feedback was fair: it added more runtime abstraction than needed for the problem at hand.
Another alternative is to keep the current monolithic skills-map.mjs and continue adding support directly there. That is the simplest option short term, but it keeps the same shared-write hotspot and does not improve contribution DX as the catalog grows.
This revised proposal tries to keep the good part of the original idea, separating authoring from runtime concerns, while staying much more pragmatic and keeping the runtime contract unchanged.
If approved, I’ll work on this.
This is a revised take on my first PR, #31 .
Right now
autoskillsgrows through one shared file:skills-map.mjs.That means unrelated contributions end up competing on the same authoring surface. As support grows, the file becomes harder to review, easier to conflict on, and easier to accidentally overwrite during rebases or manual conflict resolution.
The issue is not the runtime contract itself. The issue is that the runtime artifact is also the main authoring surface.
Before
Describe the solution you'd like
Split authoring for technologies and combos into small source records, then build the existing
skills-map.mjsfrom those records.The runtime stays the same.
lib.mjscan keep consumingskills-map.mjsexactly as it does today.After DX
Describe alternatives you've considered
The first alternative was my original PR, #31 , which introduced an indexed runtime registry. I still think the direction was valid, but the feedback was fair: it added more runtime abstraction than needed for the problem at hand.
Another alternative is to keep the current monolithic
skills-map.mjsand continue adding support directly there. That is the simplest option short term, but it keeps the same shared-write hotspot and does not improve contribution DX as the catalog grows.This revised proposal tries to keep the good part of the original idea, separating authoring from runtime concerns, while staying much more pragmatic and keeping the runtime contract unchanged.
If approved, I’ll work on this.