{"id":"d6d6f7cb-b25f-4412-8ea1-7313b8db1429","slug":"clawhub-bovinphang-fec-vue3-project-standard","name":"Vue3 Project Standard","description":"Use when designing or reviewing Vue 3 + TypeScript project structure, SFC/component boundaries, composables organization, route composition, Pinia ownership, API/error/styling defaults, directives, or repository-wide Vue conventions. Prefer narrower skills for forms, data fetching, tests, accessibil","canonicalUrl":"https://www.xpersona.co/agent/clawhub-bovinphang-fec-vue3-project-standard","sourceUrl":"https://clawhub.ai/bovinphang/fec-vue3-project-standard","homepage":"https://clawhub.ai/bovinphang/skills/fec-vue3-project-standard","source":"CLAWHUB","vendor":{"slug":"clawhub","label":"Clawhub","url":"https://clawhub.ai/bovinphang/skills/fec-vue3-project-standard"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":"2.9.0","freshnessAt":"2026-10-12T01:48:35.766Z","freshnessLabel":"Oct 12, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Oct 12, 2026"},{"label":"Vendor","value":"Clawhub"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"2.9.0"}],"factsPreview":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Clawhub","href":"https://clawhub.ai/bovinphang/skills/fec-vue3-project-standard","sourceUrl":"https://clawhub.ai/bovinphang/skills/fec-vue3-project-standard","sourceType":"profile","confidence":"medium","observedAt":"2026-10-12T01:48:35.856Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-bovinphang-fec-vue3-project-standard/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bovinphang-fec-vue3-project-standard/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-12T01:48:35.856Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"959 downloads","href":"https://clawhub.ai/bovinphang/fec-vue3-project-standard","sourceUrl":"https://clawhub.ai/bovinphang/fec-vue3-project-standard","sourceType":"profile","confidence":"medium","observedAt":"2026-10-12T01:48:35.856Z","isPublic":true},{"factKey":"latest_release","category":"release","label":"Latest release","value":"2.9.0","href":"https://clawhub.ai/bovinphang/fec-vue3-project-standard","sourceUrl":"https://clawhub.ai/bovinphang/fec-vue3-project-standard","sourceType":"release","confidence":"medium","observedAt":"2026-09-26T14:41:46.275Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-bovinphang-fec-vue3-project-standard/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bovinphang-fec-vue3-project-standard/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["959 downloads","Trust evidence available"],"agentCard":{"name":"Vue3 Project Standard","description":"Use when designing or reviewing Vue 3 + TypeScript project structure, SFC/component boundaries, composables organization, route composition, Pinia ownership, API/error/styling defaults, directives, or repository-wide Vue conventions. Prefer narrower skills for forms, data fetching, tests, accessibil","source":"CLAWHUB","sourceId":"clawhub:s175m64gr8tsfc06cj22czzfys83mp52:fec-vue3-project-standard","homepage":"https://clawhub.ai/bovinphang/skills/fec-vue3-project-standard","repository":"https://clawhub.ai/bovinphang/fec-vue3-project-standard","documentation":"https://www.xpersona.co/agent/clawhub-bovinphang-fec-vue3-project-standard","protocols":["OPENCLEW"],"examples":[{"kind":"example","language":"typescript","snippet":"export function useUserList(params: MaybeRef<QueryParams>) {\n  const data = ref<User[]>([]);\n  const loading = ref(false);\n  const error = ref<Error | null>(null);\n\n  async function fetch() {\n    loading.value = true;\n    error.value = null;\n    try {\n      const res = await getUserList(toValue(params));\n      data.value = res.list;\n    } catch (e) {\n      error.value = e as Error;\n    } finally {\n      loading.value = false;\n    }\n  }\n\n  watchEffect(() => {\n    fetch();\n  });\n\n  return {\n    data: readonly(data),\n    loading: readonly(loading),\n    error: readonly(error),\n    refetch: fetch,\n  };\n}"},{"kind":"example","language":"vue","snippet":"<template>\n  <div class=\"card\">\n    <div class=\"card-header\">\n      <slot name=\"header\">{{ title }}</slot>\n    </div>\n    <div class=\"card-body\">\n      <slot :data=\"processedData\" :loading=\"loading\" />\n    </div>\n  </div>\n</template>"}]}}