Skip to content

Pi: make generated OpenSpec skills explicitly invoked #2156

Open

Description

@yvolchkov

The problem, in one or two sentences

I use Pi and want to choose when to enter an OpenSpec workflow, rather than have its workflow skills advertised to the model during every task. OpenSpec doesn't need to stay in the model's attention when the user isn't doing spec-driven work; I'd like a cleaner default context while keeping the workflows available on demand.

Who this affects

Pi users who prefer explicitly controlled OpenSpec workflows, including those using skills-only delivery. This is a Pi-specific request, not a proposal to change invocation behavior for other agents.

Pi already loads full skill instructions lazily. The concern here is the names and descriptions advertised for automatic selection: they add workflow choices and potential distractions even during unrelated work, not the full skill bodies or a measured token/performance cost.

Alternatives considered

  • Commands-only delivery: avoids advertising the skills, but removes explicit /skill:… access and doesn't cover skills-only installations.
  • Manually editing frontmatter: adding disable-model-invocation: true makes a Pi skill explicit-only, but generated files can be overwritten by openspec update.

Why it's worth the added complexity

Explicit-only skills stay installed and usable without remaining in the model's automatic-discovery context. When the user invokes /skill:openspec-propose, Pi loads the instructions normally, with no manual file handling. This keeps OpenSpec available when requested without making it a standing workflow choice for every task.

There is a trade-off: making this the default would remove automatic natural-language discovery for Pi users who currently rely on it. I'd like maintainer input on whether that default is appropriate; I'm not assuming automatic discovery is a bug.

What I have in mind

Generate Pi-targeted OpenSpec skills with:

disable-model-invocation: true

Pi documents this field as keeping skills available through explicit invocation while excluding them from automatic model selection.

The suggested behavior would:

  • Apply during initialization and updates, including skills-only delivery.
  • Preserve explicit /skill:… invocation and existing Pi prompt commands where installed.
  • Leave other agents unchanged, without adding a new user-facing flag.

Related work and contribution

Would you consider this appropriate for the existing Pi integration, or prefer addressing it through the skills overhaul? I'm happy to contribute a focused change if invited, and to adapt the approach based on the discussion.

Activity

  1. yvolchkov commented on Oct 26, 2026

    @yvolchkov
    Author

    BTW, I've been test driving a draft of this for a week now

  2. TabishB commented on Oct 26, 2026

    @TabishB
    Contributor

    @yvolchkov, I understand the concern here. I don't think this should be the default behavior for most people, to be honest. But I think what we need to change is having openspec update modify the front matter there, possibly. I'd want to understand/reserach how other libraries solve this though?

    For example for the vercel skills do they specify whether skills are installed with certain frontmatter? How does the vercel skills package handle updates? Do they also rewrite front matter? I think this context would help us decide how to handle it.

    (We do eventually want to move towards being able to serve openspec through npx skills for what it's worth so we would need to align ourselves with their process)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions