# Goga Cell Go

> Golang rules for implementing CODEMANIFEST contracts

- **Type:** Skill
- **Install:** `agentstack add skill-qarium-goga-goga-cell-go`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [qarium](https://agentstack.voostack.com/s/qarium)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** BSD-3-Clause
- **Upstream author:** [qarium](https://github.com/qarium)
- **Source:** https://github.com/qarium/goga/tree/1.1.x/goga/assets/skills/goga-cell-go

## Install

```sh
agentstack add skill-qarium-goga-goga-cell-go
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Golang: Contract Implementation Rules

Language skill for Golang.

Apply this specification within the calling skill's context. Do not paraphrase the contents — use them
to drive decisions.

Invoked through the `goga-lang-disp` router.

---

## Examples

A complete CODEMANIFEST example for Go with all DSL constructs:

```yaml
Imports:
  - Types:
      - BaseModel
      - RepositoryConfig AS Config
    Usages:
      - query_patterns
    From: path/to/storage_cell

Usages:
  conventions: .goga/usages/go_conventions.md
  pattern: |
    Follow Go idioms: return errors as last return value, use interfaces for abstraction.
  testing: |
    Table-driven tests required for all exported functions and methods.

Annotations: |
  Use `conventions` for code style.
  Use `testing` for test requirements.
  Use `query_patterns` from Imports for database query patterns.

  All methods returning errors must follow `(result, error)` pattern.

---

"ParseInput(input string) -> data:[]byte":
  location: parser.go
  annotations: |
    Parse raw input string into structured data.

    `input`: raw string to parse

    Use `pattern` for implementation.

"Server(host string)":
  location: server.go
  annotations: |
    HTTP server with configurable host.

    `host`: server hostname

    Use `query_patterns` from Imports for request handling.
    Use `conventions` for code style.
  properties:
    "Host -> string": |
      Server hostname.
    "Port -> int64": |
      Server port number.
  methods:
    "HandleRequest(req Request) -> resp:Response, err:error": |
      Handle incoming HTTP request.

      `req`: incoming request
      `resp`: response to send
      `err`: error if request handling fails

      Use `pattern` for implementation.
    "Shutdown() -> err:error": |
      Gracefully shut down the server.
      `err`: error if shutdown fails.

"BaseModel::Repository(db DB)":
  location: repository.go
  annotations: |
    Repository extending BaseModel with database operations.

    `db`: database connection

    Use `query_patterns` from Imports for query construction.

->BaseModel: {}

---

Author: Goga
CreatedAt: 22/05/26
Description: |
  Example CODEMANIFEST demonstrating all DSL constructs for Go.
```

## Cell

A cell is a Go package:

```
cell/
├── CODEMANIFEST
├── cell.go
```

## Language Specifics

**Facade**: The Go package itself serves as the facade. All exported identifiers define the cell's public API.
The contract-extractor reads exported names verbatim — names declared in CODEMANIFEST must match exactly.

**Naming**: Use camelCase for all identifiers (no underscores). Exported identifiers start with
an uppercase letter: `SomeFunc`, `SomeField`. Unexported identifiers start with lowercase: `someFunc`, `someField`.
CODEMANIFEST references exported names only.

**Constructors**: Go does not provide constructors. The Entity signature declares a factory function (e.g. `NewServer()`).

**Methods**: Methods are defined via receivers, not inside struct definitions. The contract-extractor associates methods
with their struct based on the receiver type.

**Error handling**: Follow the `(result, error)` idiom. CODEMANIFEST return values must carry
a semantic label: `() -> err:error` or `() -> result:T, err:error`.

## Construct Mapping

| Go                              | CODEMANIFEST     | Note                                      |
|---------------------------------|------------------|-------------------------------------------|
| `type X struct`                 | Entity           | Struct fields → properties (exported only)|
| `type X interface`              | Entity           | Interface methods → methods               |
| `func (r *X) Method()`          | Method           | Bound to Entity by receiver type          |
| `func Name()` (no receiver)     | Routine          | Package-level function                    |
| Exported struct field           | Property         | Type derived from field declaration       |

## Implementation

- Public API = exported identifiers
- Use structs + functions

## Signature Rules

Allowed:
```
string, int, float64, bool, error
[]T, map[string]T
```

Forbidden:
```
pointers (*T),
interface{},
variadic (...),
channels,
```

---

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [qarium](https://github.com/qarium)
- **Source:** [qarium/goga](https://github.com/qarium/goga)
- **License:** BSD-3-Clause

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-qarium-goga-goga-cell-go
- Seller: https://agentstack.voostack.com/s/qarium
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
