Skip to content

Follow up Goose upstream updates: non-root rules written to inert .goose/memories and skills emit legacy path #2038

Description

@dyoshikawa

Summary

Two Goose rule/skill surfaces diverge from current upstream: rulesync routes non-root rules to .goose/memories/, a directory Goose does not load as session context, and the skills adapter emits the legacy .goose/skills/ path rather than the now-recommended .agents/skills/.

Recent Releases

Gaps

  • rules — non-root rules written to a non-context directory. rulesync routes detail/scoped rules to .goose/memories/*.md (confirmed in dry-run). Goose's hints doc states nested context is loaded only from nested .goosehints / AGENTS.md files (or CONTEXT_FILE_NAMES); .goose/memories/ is the separate Memory extension's storage and is not auto-loaded as context. Effect: rulesync-generated non-root rules are effectively invisible to Goose at session start. (rules is otherwise project + global.) Source: https://goose-docs.ai/docs/guides/context-engineering/using-goosehints/
  • skills — emits the deprecated/backward-compat path. Upstream now names .agents/skills/ (project) and ~/.agents/skills/ (global) as the recommended standard, with .goose/skills/ (and .claude/skills/) discovered only "for backward compatibility." rulesync's goose target writes legacy .goose/skills/ and throws on --global (delegating ~/.agents/skills/ to the agentsskills target). Severity: low — still functional via back-compat, global covered by agentsskills. Source: https://goose-docs.ai/docs/guides/context-engineering/using-skills/

Proposed Follow-up

  • For non-root rules, emit nested .goosehints files in the corresponding subdirectories (Goose's hierarchical loader) or inline them into the root .goosehints/AGENTS.md, instead of .goose/memories/. Validate goose-rule.ts's nonRoot path against the current hints doc.
  • Consider migrating the goose skill output to .agents/skills/, or document that agentsskills is the canonical Goose skill target so users land on the recommended location.

Not gaps: MCP and permissions being global-only matches upstream (only ~/.config/goose/config.yaml and ~/.config/goose/permission.yaml exist); hooks (all 11 events) and recipes/commands/subagents are in sync.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    consideringenhancementNew feature or requestmaintainer-scrapRough notes for AI implementation. Not for human eyes.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions