Go Service Example
This example is useful when you need a concrete reference for a service repo that owns runtime entrypoints, transport integrations, and operator-facing runbooks. It shows how to capture the repo facts a teammate or agent needs before they touch a delivery path, and it keeps that context in the same shape the generator expects.
Why this profile is a good starting point
- It models a service with executable entrypoints, local stack commands, and production-facing dependencies instead of a generic library skeleton.
- It highlights the operational surface area that matters for service work: transports, handlers, delivery channels, and focused verification.
- It demonstrates how draft profiles can still be useful even when ownership details remain unresolved in the source repo snapshot.
Profile at a glance
- Repo: Notify
- Repo path:
{profile.facts.repo.path} - Repo kind:
{profile.facts.repo.kind} - Language:
{profile.facts.repo.language} - Draft status:
{profile.facts.meta.draftStatus} - Summary: Go notification delivery service centered on notify-sender over triggers-v2.
Provenance
- Source repo path:
{profile.provenance.sourceRepoPath} - Snapshot date:
{profile.provenance.snapshotDate} - Owner or steward:
{profile.provenance.ownerOrSteward} - Provenance note: Derived from the repo README, Makefile, and docs paths present in the repo snapshot.
What the facts emphasize
Entry points and runtime shape
The profile points straight at the executables and runtime-bearing directories a service maintainer would inspect first:
cmd/notify-sender/main.gocmd/notify/main.gointernal/handlersinternal/channel/inappCommands and verification cues
These commands tell the generator what a minimal service workflow looks like:
- Setup:
{profile.facts.commands.setup.join(" | ")} - Dev:
{profile.facts.commands.dev.join(" | ")} - Test:
{profile.facts.commands.test.join(" | ")} - Build:
{profile.facts.commands.build.join(" | ")}
The verification guidance stays close to real service risk:
Integration surface and source docs
The integrationSurface block captures the service boundary that downstream artifacts should preserve:
- Inputs: NATS, Kafka, HTTP
- Outputs: In-app websocket delivery, template-driven notifications
- Dependencies: MongoDB, NATS, Redis
The profile also anchors the example in repo-native docs instead of inventing a parallel narrative:
docs/notify-sender.md (notify-sender architecture)docs/runbooks/adding_a_channel.md (Adding a channel)Generated artifact preview
ExampleArtifactShowcase runs the shared renderer path against the shipped example id. That matters because the output below is not hand-written docs content; it is the same artifact pack shape the generator produces from REPO_FACTS.json plus provenance.