1jehuang / 1jehuang/jcode

Add repo and task-level skill scoping

Open
#141 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement priority: medium triage: needs-decision
Dominant language
Rust
Stars
19.9k
Forks
2.3k
Avg merge
2d 7h
Merged PRs (30d)
30

Description

Summary

Add repo-level and task-level skill scoping so Jcode can hide irrelevant global skills from a project, while still allowing planned discovery of skills that may become relevant.

Current behavior

Jcode loads skills from:

  • ~/.jcode/skills/
  • <repo>/.jcode/skills/
  • <repo>/.claude/skills/

All loaded skills are shown in the # Available Skills section of the system prompt and in slash autocomplete. Project-local skills can override a global skill with the same name, but there is no native allowlist, denylist, or lock file for a repo.

A quick code check suggests allowed-tools in skill frontmatter is parsed and displayed by skill_manage, but activating a skill does not apply it as an agent tool allowlist. Tool allowlists exist separately at the agent level.

Requested feature

Support a small repo config file that controls which skills are visible, hidden but discoverable, or blocked for the current project.

Example shape:

{
  "version": 1,
  "mode": "allowlist",
  "include": ["graphite-pr", "cflx-*", "request-code-review", "simplify"],
  "exclude": ["supabase", "firecrawl-*"],
  "discoverable": ["find-skills", "supabase"]
}

Suggested behavior:

  • Visible skills appear in # Available Skills, slash autocomplete, and skill memory retrieval.
  • Discoverable skills are not loaded into normal prompt context, but can be found during planning or explicit skill search.
  • Blocked skills are not invokable unless the user explicitly overrides the project policy.
  • Project-local skills should still override global skills by name.
  • Subagents or swarms could optionally receive a small skill scope, such as review-only, cflx-only, or no-skills.

Why this helps

  • Keeps the system prompt smaller for projects with many global skills.
  • Reduces accidental activation of irrelevant skills, such as framework-specific skills in repos that do not use that framework.
  • Allows planning workflows to discover skills before adding a new technology.
  • Makes subagents easier to brief because they only see skills related to their task.
  • Builds on the existing distinction between global and project-local skills without changing the skill format.

Notes

This does not need to be a large plugin system. A first pass could just filter the loaded SkillRegistry for prompt listing, slash autocomplete, slash invocation, and synthetic skill memory entries.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing SkillRegistry and the skill-loading paths from ~/.jcode/skills/, /.jcode/skills/, and /.claude/skills/. Then follow how skills feed prompt listing, slash autocomplete and invocation, and synthetic skill memory entries. Done means a repo config can distinguish visible, discoverable and blocked skills while preserving project-local overrides.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.