一键导入
fini-frontend
Fini Vue frontend implementation conventions for views, templates, rendering decisions, and tests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Fini Vue frontend implementation conventions for views, templates, rendering decisions, and tests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
TRIGGER when user asks to create, update, list, or manage quests, spaces, reminders, or Focus state in Fini. Use the `fini-cli` foundation skill for binary preflight, CLI/app mode selection, JSON output decisions, and safe command sequencing before any action.
Always use this at the start of development work in the Fini repo. Orchestrates which repo-local or gstack skill to load, which Makefile command to prefer, what context to read, and what evidence is required before claiming implementation, debugging, QA, Android, design-to-code, release, or documentation work is complete.
Use this skill for Fini major release preparation, especially when the user asks for Play Store screenshots, Android marketplace screenshots, store listing assets, release screenshot packages, or "major release prep". This skill should trigger even if the user only mentions screenshots, because Fini's canonical store assets live in `docs/play-store/` and must be generated, checked, and reported consistently before a release.
Run and maintain Fini's GitOps release workflow. Use this whenever the user asks to make a release, bump a release version, push a release tag, inspect release readiness, fix release automation, or verify release CI. Releases are initiated by pushing a signed annotated v* tag; `make release` must run `make pre-release-check` before any version commit, branch push, or tag push.
Single source of truth for testing the Fini app: how to run unit, integration, and end-to-end tests, and how to write new ones. Use when the user asks to run tests, write a test, add coverage, debug a failing test, choose a test category, set up a multi-actor scenario, or understand fixtures and harnesses. For Android-only behavior, load `fini-android-testing` instead. For CLI semantics referenced from CLI e2e tests, also load `fini-cli`. For Makefile/CI/script changes around tests, also load `fini-scripting`.
Install or upgrade Fini CLI from the latest GitHub release assets.
| name | fini-frontend |
| description | Fini Vue frontend implementation conventions for views, templates, rendering decisions, and tests. |
Use this skill when creating or changing Vue frontend code under src/, especially view components, templates, conditional rendering, lists, and frontend tests.
renderFlagsAvoid embedding render decision logic directly in Vue templates with ad hoc expressions such as:
<section v-if="startupAutoUpdateSupported && !loading">
Instead, expose a computed renderFlags object from the component and bind template conditionals to named flags:
const renderFlags = computed(() => ({
automaticUpdatesSection: startupAutoUpdateSupported.value,
}));
<section v-if="renderFlags.automaticUpdatesSection">
Rules:
v-if, v-show, or conditional template section should use a named renderFlags key.renderFlags is not the source of all component state. It is only the template render contract: each key answers whether a specific UI section or element should render.renderFlags.renderFlags derive from those state sources instead of replacing them.automaticUpdatesSection, emptyState, deviceList, or restoreNotice over names like isDesktopAndEnabled.v-forFor non-trivial lists, avoid filtering, sorting, or mapping directly inside v-for.
Prefer a named computed list source:
const renderLists = computed(() => ({
visibleDevices: devices.value.filter((device) => device.visible),
}));
<DeviceRow
v-for="device in renderLists.visibleDevices"
:key="device.id"
:device="device"
/>
Rules:
v-for should normally iterate over a named source that is already filtered and ordered.When adding or changing render flags:
Before handing off frontend template changes, check:
renderFlags for product/platform rendering decisions.npm run build or the relevant frontend test target passes.