{"record":{"id":"d80083ac42d08f80","repo":"nikivdev/code","slug":"skill-source-is-only-supported-for-codex-sessions","errorCode":null,"errorMessage":"skill-source is only supported for Codex sessions; use `f codex skill-source ...`","messagePattern":"skill-source is only supported for Codex sessions; use `f codex skill-source \\.\\.\\.`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai.rs","lineNumber":629,"sourceCode":"                    \"skill-source is only supported for Codex sessions; use `f codex skill-source ...`\"\n                );\n            }\n            Some(ProviderAiAction::Agent { .. }) => {\n                bail!(\"agent is only supported for Codex sessions; use `f codex agent ...`\");\n            }\n            Some(ProviderAiAction::Log { .. }) => {\n                bail!(\"log is only supported for Codex sessions; use `f codex log ...`\");\n            }\n            Some(ProviderAiAction::Sessions { .. })\n            | Some(ProviderAiAction::Browse { .. })\n            | Some(ProviderAiAction::Continue { .. })\n            | Some(ProviderAiAction::New)\n            | Some(ProviderAiAction::Open { .. })\n            | Some(ProviderAiAction::Resolve { .. })\n            | Some(ProviderAiAction::Resume { .. })\n            | Some(ProviderAiAction::Find { .. })\n            | Some(ProviderAiAction::FindAndCopy { .. }) => {\n                bail!(\n                    \"Cursor transcripts are readable only; use `f cursor list`, `f cursor copy`, or `f cursor context`\"\n                );\n            }\n            Some(ProviderAiAction::Recover { .. }) => {\n                bail!(\"recover is only supported for Codex sessions; use `f ai codex recover ...`\");\n            }\n        }\n        return Ok(());\n    }\n\n    match action {\n        None => quick_start_session(provider)?,\n        Some(ProviderAiAction::List) => list_sessions(provider)?,\n        Some(ProviderAiAction::LatestId { path }) => print_latest_session_id(provider, path)?,\n        Some(ProviderAiAction::Sessions { path, json }) => provider_sessions(provider, path, json)?,\n        Some(ProviderAiAction::Browse { path, query }) => {\n            browse_codex_sessions(path, query, provider)?\n        }","sourceCodeStart":611,"sourceCodeEnd":647,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai.rs#L611-L647","documentation":"Raised by `run_provider` in src/ai.rs when the `skill-source` action is dispatched against a Cursor session. Skill source inspection is a Codex-only integration; the Cursor dispatch explicitly bails and points to `f codex skill-source ...`.","triggerScenarios":"Running `f cursor skill-source ...`, or run_provider(Provider::Cursor, Some(ProviderAiAction::SkillSource{..})). Happens when skill-source lookups are configured for the wrong provider.","commonSituations":"Skill development workflows copied from Codex setups, wrappers enumerating skill commands across providers, stale aliases after switching default provider.","solutions":["Run `f codex skill-source ...` instead","Use only the read-only Cursor commands (`f cursor list` / `copy` / `context`) for Cursor data","Assert provider == Codex in scripts before skill-related calls","Fix shell aliases/abbreviations that expand to the wrong provider"],"exampleFix":"// before\nf cursor skill-source my-skill\n// after\nf codex skill-source my-skill","handlingStrategy":"validation","validationCode":"fn supports_skill_source(provider: Provider) -> bool {\n    matches!(provider, Provider::Codex)\n}\nif !supports_skill_source(provider) {\n    eprintln!(\"skill-source requires Codex: use `f codex skill-source ...`\");\n    return;\n}","typeGuard":"fn is_codex(provider: Provider) -> bool {\n    matches!(provider, Provider::Codex)\n}","tryCatchPattern":"if let Err(e) = run_provider(provider, Some(ProviderAiAction::SkillSource { .. })) {\n    if e.to_string().contains(\"skill-source is only supported for Codex\") {\n        eprintln!(\"rerun as: f codex skill-source ...\");\n    } else {\n        return Err(e);\n    }\n}","preventionTips":["Look up skill sources only via `f codex skill-source`","Fix stale aliases that expand skill commands under the wrong provider","Assert Codex in skill-dev tooling before inspection calls","Treat Cursor as transcript-only in all skill workflows"],"tags":["unsupported-action","provider-dispatch","cli"],"backgroundTag":"provider-unsupported-action","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}