CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

extension-to-functions-codebase

Skill for converting an installed Firebase Extension (or extension source) into a standalone Cloud Functions for Firebase codebase or publishable npm package, including V1 to V2 trigger upgrades, lifecycle hooks, and declarative security

Quality

76%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/extension-to-functions-codebase/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

72%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A concise, highly actionable migration guide with a clear step sequence. The main gaps are missing validation checkpoints in the workflow and orphaned reference files that are never linked from the body, which also hides valuable detail behind unsignaled paths.

Suggestions

Add an explicit validation step (e.g., 'Step 6: Verify — run the preserved jest tests and confirm the V2 functions deploy') to close the workflow_clarity gap.

Link the existing reference files from the body where they are most relevant — e.g., 'Apply the Destructuring Compatibility Shim ({ change, context }) — see references/destructuring-shim.md and references/signature-mapping.md' and a pointer to references/configuration-migration.md for .runWith() settings.

Include a short copy-paste-ready shim code example in Step 3 so the compatibility pattern is fully executable without leaving SKILL.md.

DimensionReasoningScore

Conciseness

The body is lean and dense: rules, exact mappings, and short code blocks with no padding and no explanation of concepts Claude already knows. Every line carries migration-specific information (e.g., 'set cpu: "gcf_gen1"' to preserve V1 pricing), so it matches the 'every token earns its place' anchor rather than 4's 'minor instances of over-explanation'.

5 / 5

Actionability

Concrete, executable guidance throughout — 'firebase deploy --only functions', exact peerDependencies JSON, specific V2 imports ('onDocumentWritten', 'onTaskDispatched', 'onRequest'), and lifecycle hook syntax ('afterFirstDeploy({ task: { function: "initTask" } })'). Not 5 because the Destructuring Compatibility Shim step gives only destructuring patterns ('{ change, context }', '{ snapshot, context }') without a copy-paste-ready code example.

4 / 5

Workflow Clarity

Steps 1-5 are clearly sequenced and concretely defined, but validation checkpoints are missing or only implicit — preserving the jest test framework is mentioned, yet there is no explicit 'run tests' or 'verify build/deploy' step. This matches anchor 3 ('checkpoints missing or implicit') rather than 4 ('most checkpoints present').

3 / 5

Progressive Disclosure

The body itself is well-sectioned, but the three bundle files (references/destructuring-shim.md, references/signature-mapping.md, references/configuration-migration.md) are never linked or signaled from the body — the Destructuring Compatibility Shim is named with no pointer to its dedicated reference. References present but not clearly signaled fits anchor 3; it is not 2 because the body structure is good and nothing is deeply nested.

3 / 5

Total

15

/

20

Passed

Description

70%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A specific, niche-appropriate description with strong concrete actions and low conflict risk. Its main weakness is the absence of any explicit 'Use when...' trigger guidance, capping completeness at 3.

Suggestions

Append an explicit trigger clause, e.g. 'Use when the user asks to convert, migrate, or extract a Firebase Extension into Cloud Functions codebase or an npm package, or to upgrade 1st Gen (V1) triggers to 2nd Gen (V2).'

Add natural synonyms users might say — 'migrate extension', 'gen 1 to gen 2', 'publishable package' — to improve trigger term coverage.

Briefly mention parameterized config migration in the description so the 'what' covers the full scope of the skill.

DimensionReasoningScore

Specificity

The description lists several concrete actions — 'converting an installed Firebase Extension... into a standalone Cloud Functions for Firebase codebase or publishable npm package', 'V1 to V2 trigger upgrades, lifecycle hooks, and declarative security'. It falls short of 5 because coverage has minor gaps (e.g., parameter/config migration, README/packaging details) and exceeds 3 because it goes well beyond naming 1-2 actions.

4 / 5

Completeness

It clearly answers 'what does this do' but contains no 'Use when...' clause or equivalent explicit trigger guidance, which caps completeness at 3 per the judging guidelines. It is not 4 because the 'when' is entirely absent rather than merely weakly implied.

3 / 5

Trigger Term Quality

Natural domain terms users would say are present ('Firebase Extension', 'Cloud Functions for Firebase', 'npm package', 'V1 to V2 trigger', 'lifecycle hooks'). A few natural terms and synonyms are missing ('migrate', 'gen 1 to gen 2', 'publish'), which keeps it at 4 rather than 5.

4 / 5

Distinctiveness Conflict Risk

The description carves out a clear niche — Firebase Extension to Functions-codebase/npm-package migration — with distinct trigger terms and minimal overlap risk with other skills.

5 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

firebase/agent-skills

Path

skills/extension-to-functions-codebase/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.