SkillAgentSearch skills...

Prabogo

Prabogo is a Go framework designed to simplify project development by providing an interactive command interface and built-in instructions for AI assistance.

Install / Use

/learn @prabogo/Prabogo
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Prabogo

Alt text

Prabogo is a Go framework designed to simplify project development by providing an interactive command interface and built-in instructions for AI assistance. This framework streamlines common engineering tasks, making it easier for software engineers to scaffold, generate, and manage project components efficiently. With Prabogo, developers benefit from automation and intelligent guidance, accelerating the software development process.

Design Docs

Design Docs List

AI Agents

Clarifier Task Designer Executor

AI Agents for Development

Requirement

  1. go version >= go1.24.0

Before running the app, copy the example environment file:

cp .env.example .env

Start External Services with Docker Compose

docker-compose up -d

Stop External Services with Docker Compose

docker-compose down

Start Authentik Services with Docker Compose

To start Authentik authentication services (includes PostgreSQL, Redis, Server, and Worker):

docker-compose -f docker-compose.authentik.yml up -d

Stop Authentik Services with Docker Compose

docker-compose -f docker-compose.authentik.yml down

Start Temporal Services with Docker Compose

To start Temporal workflow services (includes PostgreSQL, Elasticsearch, Temporal Server, Admin Tools, and Web UI):

docker-compose -f docker-compose.temporal.yml up -d

The Temporal UI will be available at http://localhost:8080 and the Temporal server will be accessible on port 7233.

Stop Temporal Services with Docker Compose

docker-compose -f docker-compose.temporal.yml down

Run App in Development Mode

To run the application directly (without Makefile or Docker), ensure all required environment variables are set. You can use a .env file or export them manually.

Start the app with:

go run cmd/main.go <option>

Replace <option> with any command-line arguments your application supports. For example:

go run cmd/main.go http

Make sure external dependencies (such as PostgreSQL, RabbitMQ, and Redis) are running, either via Docker Compose or another method.

Makefile Commands

The project includes a comprehensive Makefile with various helpful commands for code generation and development tasks.

Interactive Command Runner

Alt text

You can use the interactive target selector to choose and run Makefile targets:

make run

This will display an interactive menu to select a Makefile target and will prompt for any required parameters. The selector works in two modes:

  1. If fzf is installed: Uses a fuzzy-search interactive selector (recommended for best experience)
  2. If fzf is not available: Falls back to a basic numbered menu selection

To install fzf (optional):

  • macOS: brew install fzf
  • Linux: apt install fzf (Ubuntu/Debian) or dnf install fzf (Fedora)
  • Windows: With chocolatey: choco install fzf or with WSL, follow Linux instructions

Common Makefile Targets

Code Generation Targets

  • model: Creates a model/entity with necessary structures (requires VAL parameter)

    make model VAL=name
    
  • migration-postgres: Creates a PostgreSQL migration file (requires VAL parameter)

    make migration-postgres VAL=name
    
  • inbound-http-fiber: Creates HTTP handlers using Fiber framework (requires VAL parameter)

    make inbound-http-fiber VAL=name
    
  • inbound-message-rabbitmq: Creates RabbitMQ message consumers (requires VAL parameter)

    make inbound-message-rabbitmq VAL=name
    
  • inbound-command: Creates command line interface handlers (requires VAL parameter)

    make inbound-command VAL=name
    
  • inbound-workflow-temporal: Creates Temporal workflow worker (requires VAL parameter)

    make inbound-workflow-temporal VAL=name
    
  • outbound-database-postgres: Creates PostgreSQL database adapter (requires VAL parameter)

    make outbound-database-postgres VAL=name
    
  • outbound-http: Creates HTTP adapter (requires VAL parameter)

    make outbound-http VAL=name
    
  • outbound-message-rabbitmq: Creates RabbitMQ message publisher adapter (requires VAL parameter)

    make outbound-message-rabbitmq VAL=name
    
  • outbound-cache-redis: Creates Redis cache adapter (requires VAL parameter)

    make outbound-cache-redis VAL=name
    
  • outbound-workflow-temporal: Creates Temporal workflow starter adapter (requires VAL parameter)

    make outbound-workflow-temporal VAL=name
    
  • generate-mocks: Generates mock implementations from all go:generate directives in registry files

    make generate-mocks
    

Runtime Targets

  • build: Builds the Docker image for the application

    make build
    # Force rebuild regardless of existing image:
    make build BUILD=true
    
  • http: Runs the application in HTTP server mode inside Docker

    make http
    # Force rebuild before running:
    make http BUILD=true
    
  • message: Runs the application in message consumer mode inside Docker (requires SUB parameter)

    make message SUB=upsert_client
    # Force rebuild before running:
    make message SUB=upsert_client BUILD=true
    
  • command: Executes a specific command in the application (requires CMD and VAL parameters)

    make command CMD=publish_upsert_client VAL=name
    # Force rebuild before running:
    make command CMD=publish_upsert_client VAL=name BUILD=true
    
  • workflow: Runs the application in workflow worker mode inside Docker (requires WFL parameter)

    make workflow WFL=upsert_client
    # Force rebuild before running:
    make workflow WFL=upsert_client BUILD=true
    

Running test suite

Unit tests

go test -cover ./internal/domain/...

To generate coverage report:

go test -coverprofile=coverage.profile -cover ./internal/domain/...
go tool cover -html coverage.profile -o coverage.html

Coverage report will be available at coverage.html

To check intermittent test failure due to mock. when in doubt, use -t 1000

retry -d 0 -t 100 -u fail -- go test -coverprofile=coverage.profile -cover ./internal/domain/... -count=1

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Moch Dieqy Dzulqaidar

View on GitHub
GitHub Stars359
CategoryDevelopment
Updated12d ago
Forks20

Languages

Go

Security Score

95/100

Audited on Mar 16, 2026

No findings