From feature-flag
Use when adding, toggling, or removing feature flags in meloming projects, or when the user says: 피쳐플래그 추가, feature flag, 기능 토글, 킬 스위치, 새 기능 플래그
How this skill is triggered — by the user, by Claude, or both
Slash command
/feature-flag:feature-flagThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
PostHog Feature Flags로 meloming 클라이언트(Front/iOS/Android)의 기능을 독립적으로 켜고 끈다. 백엔드 변경 없이 클라이언트 UI만 제어.
PostHog Feature Flags로 meloming 클라이언트(Front/iOS/Android)의 기능을 독립적으로 켜고 끈다. 백엔드 변경 없이 클라이언트 UI만 제어.
Security boundary: Flag는 UX 게이팅일 뿐, 보안/인가가 아니다. API는 항상 열려있음.
| Platform | File | Format |
|---|---|---|
| Front | src/shared/lib/feature-flags.ts | { key: string, default: boolean } |
| iOS | Meloming/Core/FeatureFlags/FeatureFlags.swift | enum FeatureFlag: String with defaultValue |
| Android | core/analytics/.../FeatureFlag.kt | enum class FeatureFlag(key, default) |
smart-song-addition)default = falsedefault = trueFront (meloming-front/src/shared/lib/feature-flags.ts):
export const FeatureFlags = {
// ... existing flags
myNewFeature: { key: 'my-new-feature', default: false },
} as const
iOS (meloming-ios/Meloming/Core/FeatureFlags/FeatureFlags.swift):
enum FeatureFlag: String, CaseIterable {
// ... existing cases
case myNewFeature = "my-new-feature"
var defaultValue: Bool {
switch self {
// ... existing cases
case .myNewFeature: return false
}
}
}
Android (meloming-android/core/analytics/.../FeatureFlag.kt):
enum class FeatureFlag(val key: String, val default: Boolean) {
// ... existing entries
MY_NEW_FEATURE("my-new-feature", false),
}
Front:
const enabled = useFeatureFlag('myNewFeature')
if (enabled) { /* show feature */ }
iOS:
@ObservedObject private var flags = FeatureFlagManager.shared
if flags.isEnabled(.myNewFeature) { /* show feature */ }
Android:
val revision by featureFlagManager.flagsRevision.collectAsStateWithLifecycle()
if (featureFlagManager.isEnabled(FeatureFlag.MY_NEW_FEATURE)) { /* show feature */ }
my-new-featureenvironment = qa → 100% rolloutenvironment = production condition 추가 (줄임말 prod 사용 금지)순서가 중요하다. PostHog 먼저 삭제하면 기존 릴리즈된 앱에서 동작이 변경될 수 있음.
| Platform | Wrapper | Reactivity |
|---|---|---|
| Front | useFeatureFlag(name) hook | useFeatureFlagEnabled — 자동 리렌더링 |
| iOS | FeatureFlagManager.shared.isEnabled(flag) | ObservableObject + NotificationCenter |
| Android | featureFlagManager.isEnabled(flag) | StateFlow + PostHogOnFeatureFlags |
flagsRevision.collectAsStateWithLifecycle() 없으면 flag 변경 시 UI 안 바뀜FeatureFlagManager.shared.isEnabled() 직접 호출만으로는 SwiftUI 리렌더링 안 됨Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub dokdo2013/claude-code-skills --plugin feature-flag