원클릭으로
cocos-playable-architect
Use when working on playable ad projects, from initial concept to final delivery.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when working on playable ad projects, from initial concept to final delivery.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use this skill when the user asks to release the iOS app, upload a build, submit to App Store Connect review, or "在 App Store 上架/提交审核" for WordMagicGame.
Seed a lesson-import draft on a deployed Happyword API (Preview or prod) and optionally run the extract-pending cron so it reaches `pending` (待复核). Uses tools starting with `hw_`. Invoke when the user wants to upload a textbook photo for review against a specific Vercel URL, mirror E2E `test_lesson_import_cron_e2e`, or smoke-test lesson import + cron on a branch deployment.
Investigate why a Vercel preview / production deployment of the FastAPI server is broken (404 on every path, 500 on every path, e2e CI red, etc.). Pulls the right log surface for the symptom and maps HTTP error headers to root causes. Use whenever the deployed server returns wrong responses, the server-ci e2e job fails, or autofix loops keep retrying without converging.
Health-check every active Vercel Preview deployment listed in the live manifest at `https://happyword.cool/api/v1/public/preview-urls.json`. Probes `GET /api/v1/public/health` through Vercel Deployment Protection (`x-vercel-protection-bypass` header), prints a one-line status per preview, and exits non-zero if any are sick. Use when the user asks to "test preview health", "check previews", "are PR previews alive?", before merging anything that touches `server/`, after a fleet-wide redeploy or env-var rotation, or after rotating `VERCEL_AUTOMATION_BYPASS_SECRET` — do NOT loop ad-hoc `curl` calls or use `tools/vercel/smoke-prod.sh` (production-only) for this.
Drives a per-feature visual + spec-anchored gap scout across HarmonyOS / iOS / Android using tools/parity_scout/. Use when asked to "find iOS / Android gaps vs HarmonyOS main", "check parity for <feature>", or "screenshot the three platforms and tell me what's different".
Drives a per-feature visual + spec-anchored gap scout across HarmonyOS / iOS / Android using tools/parity_scout/. Use when asked to "find iOS / Android gaps vs HarmonyOS main", "check parity for <feature>", or "screenshot the three platforms and tell me what's different".
| name | cocos-playable-architect |
| description | Use when working on playable ad projects, from initial concept to final delivery. |
This Codex skill adapts the upstream Cocos Creator Claude agent guidance for use in Codex.
Expert in designing and implementing playable ads with Cocos Creator, specializing in size optimization, engagement mechanics, and conversion optimization. Use this skill for playable ad projects, from initial concept to final delivery.
Context: Starting a new playable ad
User: "Create a match-3 playable ad structure"
Assistant: "I will use $cocos-playable-architect"
Commentary: Sets up optimized project structure for playable ads
Context: Playable exceeds network limits
User: "Reduce playable size to under 3MB"
Assistant: "I will use $cocos-playable-architect"
Commentary: Implements aggressive optimization strategies
Context: Low conversion rates
User: "Improve the tutorial flow for better conversion"
Assistant: "I will use $cocos-playable-architect"
Commentary: Creates engaging, quick tutorial with clear CTA
// PlayableConfig.ts
export const PlayableConfig = {
// Timing
tutorialDuration: 15, // seconds
totalDuration: 30, // seconds
ctaDelay: 3, // seconds before first CTA
// Features
features: {
sound: false, // Often disabled in playables
particles: 'minimal', // Reduce for size
animations: 'essential', // Only core animations
},
// Export settings
export: {
singleFile: true,
inline: true,
compress: true,
removeConsole: true,
}
};
@ccclass('PlayableManager')
export class PlayableManager extends Component {
@property(Node)
tutorialHand: Node = null;
@property(Node)
ctaButton: Node = null;
@property
autoPlayDelay: number = 8;
private _interactionCount: number = 0;
private _sessionStartTime: number = 0;
onLoad() {
this._sessionStartTime = Date.now();
this.initializePlayable();
this.startTutorial();
}
initializePlayable() {
// Disable features for size
game.frameRate = 30; // Lower FPS for smaller devices
// Setup CTA
this.scheduleOnce(() => {
this.showCTA(false); // Soft CTA
}, this.ctaDelay);
}
onUserInteraction() {
this._interactionCount++;
if (this._interactionCount === 1) {
// First interaction - hide tutorial
this.hideTutorial();
}
if (this._interactionCount >= 3) {
// Show CTA after engagement
this.showCTA(true);
}
}
showCTA(strong: boolean = false) {
if (strong) {
// Full screen CTA
this.showEndCard();
} else {
// Persistent CTA button
this.ctaButton.active = true;
this.animateCTA();
}
}
}
Textures
Audio
Fonts
// Build hooks for playables
export class PlayableBuildHook {
onBeforeBuild() {
// Remove unused modules
this.removeUnusedEngineModules();
// Inline all assets
this.inlineAssets();
// Minify aggressively
this.setupMinification();
}
removeUnusedEngineModules() {
// Keep only essential modules
const keepModules = [
'core',
'2d',
'ui',
'tween'
];
// Remove physics, 3d, particle, etc.
}
}
// Track key metrics
class PlayableAnalytics {
static events = {
START: 'playable_start',
FIRST_INTERACTION: 'first_interaction',
TUTORIAL_COMPLETE: 'tutorial_complete',
CTA_SHOWN: 'cta_shown',
CTA_CLICKED: 'cta_clicked',
GAME_END: 'game_end'
};
static track(event: string, params?: any) {
// Send to analytics
if (window.parent) {
window.parent.postMessage({
type: 'analytics',
event,
params
}, '*');
}
}
}
Trigger: Size optimization needed Handoff: "Playable structure ready. Size optimization needed to reach: [target]"
Trigger: Gameplay mechanics Handoff: "Playable framework ready. Gameplay implementation needed for: [genre]"
Trigger: UI/UX design Handoff: "Playable setup complete. UI implementation needed for: [screens]"
Read references/playable-ad-development.md when the task needs the full workflow.