CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

golang-samber-do

Dependency injection in Golang using samber/do — service containers, lifecycle management, scopes, health checks, graceful shutdown, and module organization. Apply when using or adopting samber/do, when the codebase imports github.com/samber/do or github.com/samber/do/v2, or when refactoring manual constructor injection into a DI container.

66

Quality

83%

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

SKILL.md
Quality
Evals
Security

Quality

Content

67%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 strong, code-dense reference for adopting samber/do: executable examples, a clear usage sequence, and properly split advanced/testing references. It is dragged down by duplicated content — the same code snippet appears twice under different labels and the MustInvoke rationale is explained twice — plus some inline material that should live in references.

Suggestions

Fix the eager-service registration example (lines 92-93): it repeats the do.ProvideValue(injector, &Config{Port: 8080}) snippet verbatim from the value-registration example, so no actual eager-registration code is ever shown.

Explain the MustInvoke-inside-providers rationale once: either the three-bullet explanation at lines 109-113 or Best Practice 6 (line 199), not both — the full argument currently appears twice in quick succession.

Trim the persona paragraph and the 'Type-safe dependency injection toolkit for Go based on Go 1.18+ generics' intro line, which restate the frontmatter description, and consider moving the sibling-skill cross-reference list into references.

DimensionReasoningScore

Conciseness

Mostly efficient, but there is real duplication and padding: the 'Register an eager service' comment (lines 92-93) repeats the exact ProvideValue snippet from lines 84-85, and the MustInvoke panic-recovery rationale is argued in full at lines 109-113 and restated as Best Practice 6 at line 199. The persona paragraph and 'Type-safe dependency injection toolkit…' intro also restate the description.

3 / 5

Actionability

Concrete, executable Go throughout — registration, invocation, implicit aliasing, named services, do.Package(), and a complete main() with signal-based shutdown, plus API quick-reference tables. Held below 5 by the duplicated/mislabeled eager-registration example and reliance on undefined placeholder types.

4 / 5

Workflow Clarity

The adoption flow is clearly sequenced (Define/Register → Invoke → Dependencies → Aliasing → Named, then Package Organization → Full Application Setup) but there is no explicit verification step (e.g., building or health-checking to confirm the DI graph wires up), placing it between the 4 and 5 anchors.

4 / 5

Progressive Disclosure

Well-signaled one-level-deep references to real files (./references/advanced.md, ./references/testing.md, neither nesting further) with a sensible core/advanced split. However, the extended MustInvoke-vs-Invoke rationale and the cross-references to sibling skills are inline content that belongs in a reference file.

4 / 5

Total

15

/

20

Passed

Description

96%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.

An exemplary description: concrete, comprehensive capability enumeration paired with an explicit, multi-condition trigger clause including import-path triggers. The only weakness is slight overlap risk with a general dependency-injection skill via the 'refactoring manual constructor injection' trigger.

DimensionReasoningScore

Specificity

Names the domain (dependency injection in Golang with samber/do) and enumerates comprehensive concrete capability areas — 'service containers, lifecycle management, scopes, health checks, graceful shutdown, and module organization' — matching the top anchor for multiple specific actions with full coverage.

5 / 5

Completeness

Explicitly answers both questions: a clear 'what' (the capability list) and an explicit 'Apply when…' clause with three concrete trigger conditions, mirroring the anchor-5 example structure.

5 / 5

Trigger Term Quality

Covers natural trigger phrasing comprehensively: 'using or adopting samber/do', 'the codebase imports github.com/samber/do or github.com/samber/do/v2', and 'refactoring manual constructor injection into a DI container', with import paths serving the role file extensions do in the anchor example.

5 / 5

Distinctiveness Conflict Risk

The named library and import-path triggers establish a clear niche with minimal conflict risk, but 'refactoring manual constructor injection into a DI container' can fire before samber/do is chosen, overlapping the library's sibling general Go-DI skill — minor overlap rather than none.

4 / 5

Total

19

/

20

Passed

Validation

81%

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

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

metadata_field

'metadata' should map string keys to string values

Warning

relative_links

Relative link issues: 9 missing

Warning

Total

13

/

16

Passed

Repository

samber/cc-skills-golang

Path

skills/golang-samber-do/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.