github gastownhall/gascity v0.15.1

latest releases: v1.2.1, v1.2.1-rc1, v1.2.0...
one month ago

Highlights

This is a hotfix release for v0.15.0, shipping the skill-materialization groundwork that v0.15.0 noted as planned follow-on work. If you maintain a city that uses Claude Code agents and wanted pack-defined skills to reach your agents without hand-plumbing symlinks, this release is for you.

Scope is intentionally narrow. This release does not include the session model unification, shared domain layer refactor, or other in-flight main-branch work. It is branched directly from v0.15.0 and only carries targeted fixes.

Upgrade Notes

  • Safe upgrade from v0.15.0. No config migration required.
  • Skill materialization is automatic for Claude Code agents. Drop a skill at <pack>/skills/<name>/SKILL.md and it becomes visible to agents in that pack's scope the next time the agent starts or the supervisor ticks.
  • Agent-local skills are supported: drop them at agents/<name>/skills/<skill>/SKILL.md.
  • Name collisions between agent-local and shared skills are surfaced by gc doctor.
  • The recommended post-upgrade flow is:
    • gc doctor
    • gc doctor --fix (repairs stale implicit-import caches, registers core bootstrap pack)
    • gc doctor

Skill Materialization

  • Added the skill materializer: pack-declared skills at <pack>/skills/<name>/SKILL.md are materialized into each agent's Claude .claude/skills/ sink via symlink at start time and on supervisor tick.
  • Added two-stage materialization: stage 1 writes into the scope root during supervisor reconciliation (matches the existing agent workdir == scope root case); stage 2 writes into per-session worktrees via a PreStart hook for agents whose sessions live outside the scope root.
  • Added agent-local skills at agents/<name>/skills/<skill>/SKILL.md, partitioned separately from shared pack skills so one agent's specialization cannot bleed into peers.
  • Added collision detection in gc doctor: when two agents in the same pack would receive a skill with the same name from different sources, doctor flags it with agent names and source paths.
  • Added the gc skill list command: shows the effective skill set an agent sees, including bootstrap implicit-import pack skills (gc-work etc.) alongside city-pack skills.
  • Added a core bootstrap pack that ships operator skills (gc-work and friends) via implicit import, so new cities pick them up automatically.
  • Added gc internal materialize-skills for operator introspection and scripted use.

Assigned-Skills Prompt Appendix

  • Added a prompt appendix that tells each agent exactly which skills are visible to them at session start. Skills are partitioned into "assigned to you" (agent-local) and "shared" (pack-level) sections so the agent knows what is theirs vs. shared.
  • Runtime-gated: the appendix only renders on paths where skill materialization actually delivers (stage-1 at scope root or stage-2-eligible sessions). No false claims of "you have these skills" when materialization would not fire.
  • Opt-out via inject_assigned_skills = false at the agent level for packs that manage their own skill prompting.

Runtime and Operator Improvements

  • Fixed SkillsDir and MCPDir population for agents declared in city.toml (previously only convention-discovered agents/<name>/ directories populated these fields).
  • Fixed a class of skill rendering regressions when SKILL.md frontmatter began with a UTF-8 BOM.
  • Added a post-compose pass that normalizes agent-local asset directories across both convention-discovered and city.toml-declared agents.

Reliability and Release Quality

  • Added unit, integration, and acceptance-tier tests spanning the full skill lifecycle (add/edit/delete/rename), CLI surfaces, stage-1 and stage-2 materialization paths, and collision detection.
  • Cleared 45 pre-existing lint issues that had accumulated on the hotfix branch during development.
  • Validated end-to-end via multi-scenario manual smoke: city-scoped skills, rig-scoped skills, agent-local skills, worktree materialization, and long-lived named_session mayor drain behavior.

Recommended Reading

Full Changelog: v0.15.0...v0.15.1

Don't miss a new gascity release

NewReleases is sending notifications on new releases.