{
    "format": "skill/v1",
    "skill_id": "react-react-claude-skills-feature-flags-skill-md",
    "name": "feature-flags",
    "version": "1.0.0",
    "description": "Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.",
    "category": [
        "开发编程"
    ],
    "trigger_words": [],
    "tags": [
        "react",
        "ai"
    ],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=react-react-claude-skills-feature-flags-skill-md",
    "exported_at": "2026-09-16T06:36:38+08:00",
    "system_prompt": "name feature-flags description Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React. React Feature Flags Flag Files File Purpose packages/shared/ReactFeatureFlags.js Default flags (canary), __EXPERIMENTAL__ overrides packages/shared/forks/ReactFeatureFlags.www.js www channel, __VARIANT__ overrides packages/shared/forks/ReactFeatureFlags.native-fb.js React Native, __VARIANT__ overrides packages/shared/forks/ReactFeatureFlags.test-renderer.js Test renderer Gating Tests @gate pragma (test-level) Use when the feature is completely unavailable without the flag: // @gate enableViewTransition it ( 'supports view transitions' , () => { // This test only runs when enableViewTransition is true // and is SKIPPED (not failed) when false }); gate() inline (assertion-level) Use when the feature exists but behavior differs based on flag: it ( 'renders component' , async () => { await act ( () => root. render ( < App /> )); if ( gate ( flags => flags. enableNewBehavior )) { expect (container. textContent ). toBe ( 'new output' ); } else { expect (container. textContent ). toBe ( 'legacy output' ); } }); Adding a New Flag Add to ReactFeatureFlags.js with default value Add to each fork file ( *.www.js , *.native-fb.js , etc.) If it should vary in www/RN, set to __VARIANT__ in the fork file Gate tests with @gate flagName or inline gate() Checking Flag States Use /flags to view states across channels. See the flags skill for full command options. __VARIANT__ Flags (GKs) Flags set to __VARIANT__ simulate gatekeepers - tested twice (true and false): /test www <pattern> # __VARIANT__ = true /test www variant false <pattern> # __VARIANT__ = false Debugging Channel-Specific Failures Run /flags --diff <channel1> <channel2> to compare values Check @gate conditions - test may be gated to specific channels Run /test <channel> <pattern> to isolate the failure Verify flag exists in all fork files if newly added Common Mistakes Forgetting both variants - Always test www AND www variant false for __VARIANT__ flags Using @gate for behavior differences - Use inline gate() if both paths should run Missing fork files - New flags must be added to ALL fork files, not just the main one Wrong gate syntax - It's gate(flags => flags.name) , not gate('name')",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "examples": [
        {
            "input": "请用feature-flags帮我处理问题",
            "output": "好的，我是feature-flags。Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React. 我会根据你的需求提供专业帮助。"
        },
        {
            "input": "介绍一下你的能力",
            "output": "我是feature-flags，专注于开发编程领域。Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React."
        }
    ],
    "install_guide": {
        "coze": "在 Coze 平台创建 Bot -> 技能配置 -> 导入此 .skill 文件",
        "dify": "在 Dify 平台创建应用 -> 添加知识库 -> 导入此 .skill 配置",
        "claude": "将 system_prompt 字段内容复制到 Claude 自定义指令中",
        "custom": "将此 .skill 文件加载到你的 AI Agent 框架中，解析 system_prompt 和 model_config 即可使用"
    }
}