[FF] ai_catalog_skills -- repository-backed skills in the AI Catalog
Summary
Roll out the feature currently behind the ai_catalog_skills feature flag.
- DRI: @samdbeckham
- Team Slack channel:
#<slack-channel-of-dri-team>
Note
Process and guidance live in the docs — this issue is just the commands and a place to track the rollout. "Rolling out" means incrementally enabling the flag on GitLab.com to validate stability — it is not the same as releasing the feature, which happens when the flag is removed. Feature flag controls · Feature flag lifecycle
What could go wrong?
- The flag has a project actor and is checked in four places: the push hook, the route and navigation surfaces, the merge request widget resolver, and the Scaffold mutation. Anything not reachable through one of those four is not gated, because it is not reachable at all.
- Enabling the flag on a project means every push to that project's default branch enqueues a worker. The worker makes one
modified_pathscall and returns immediately unless a skill path changed, but the enqueue itself is unconditional. There is no project-level opt-in setting, so the only lever is the flag. - A push that does touch a skill path costs one Gitaly
search_files_by_regexpplus oneblobs_atagainst the default branch. - The merge request widget mounts on every merge request page for an enabled project and fires one GraphQL query. It returns nil for nearly all of them, since nearly no merge request changes a
SKILL.md. - Data-loss risk to watch: renaming a Skill directory soft-deletes its Catalog Item along with every Item Consumer that enabled it, because identity is the directory name. Tracked in #630884. Widen the flag with that in mind.
- A Publish never deletes anything when a scan is incomplete, per ADR 0001, so a Gitaly outage degrades to a stale catalog rather than to lost items.
Events
- Exceptions with ai_catalog_skills:1
- Events with ai_catalog_skills:1
- Error rate and other graphs by modifying the examples in the Visualization Library
Feature Flag events are only logged by default for feature flags marked for the current or future milestones. To enable while the feature flag is active, see https://docs.gitlab.com/development/feature_flags/#logging
Rollout
Run all production /chatops in #production and cross-post the results to #<slack-channel-of-dri-team>. Background: incremental rollout process, feature actors.
Non-production
/chatops gitlab run feature set ai_catalog_skills 50 --actors --dev --pre --staging --staging-ref
/chatops gitlab run feature set ai_catalog_skills true --dev --pre --staging --staging-refProduction — percentage rollout (wait ≥15 min between steps, watch dashboards):
/chatops gitlab run feature set ai_catalog_skills <percentage> --actorsOr target specific actors instead:
/chatops gitlab run feature set --project=gitlab-org/gitlab,gitlab-org/gitlab-foss ai_catalog_skills true
/chatops gitlab run feature set --group=gitlab-org,gitlab-com ai_catalog_skills true
/chatops gitlab run feature set --user=samdbeckham ai_catalog_skills trueBefore global rollout
Confirm the relevant gotchas before going to 100% — see enabling a feature for GitLab.com:
- Docs + version history updated
- Breaking changes announced, if any
- Change management issue opened, if required
- External API consumers handled with a fail-open mechanism, if applicable
Cleanup
Remove the flag once deemed stable — see cleaning up. Track it here, or open a follow-up Feature Flag Cleanup issue. Remove the flag and its YAML definition from the codebase, then:
/chatops gitlab run release check <merge-request-url> <milestone>
/chatops gitlab run feature delete ai_catalog_skills --dev --pre --staging --staging-ref --productionRollback
/chatops gitlab run feature set ai_catalog_skills false # production
/chatops gitlab run feature set ai_catalog_skills false --dev --pre --staging --staging-ref # non-production
/chatops gitlab run feature delete ai_catalog_skills --dev --pre --staging --staging-ref --production # remove entirely