Skip to content

Split skills-map.mjs into a validated source registry #62

@tonyblu331

Description

@tonyblu331

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions