A collection of Go utilities, Python libraries, and developer tooling.
| Package | Description |
|---|---|
rate-limiter |
Token bucket rate limiter using goroutines and channels |
scraper |
Concurrent, rate-limited web scraper with worker pool and injectable scrape logic |
dttm |
Date/time parsing with auto-detected format and UTC output |
go-struct-utils |
Three struct→map strategies: JSON, basic reflection, advanced reflection |
pdf-reader |
PDF text extraction with page ranges, URL fetching, and search |
atlassian |
MCP client for Jira, Confluence, and Rovo |
status-updater |
CLI that generates a markdown status report from Jira + GitHub activity, optionally summarized via Claude Haiku |
| Package | Description |
|---|---|
std-llm-client |
Abstract LLM client with provider implementations |
std-embeddings |
Abstract embedding provider (OpenAI, Voyage, local) |
std-vector-store |
Abstract vector store interface with pluggable backends |
std-mcp-utils |
MCP server utilities — tool registration, types, request handling |
std-rag |
RAG pipeline wiring together LLM, embeddings, vector store, and chunker |
| Directory | Description |
|---|---|
cli-commands/ |
Shell snippets for Go development tasks |
pulumi/ |
Deployment notes and issue resolutions |
awesome-tools/
├── rate-limiter/
├── scraper/
├── dttm/
├── go-struct-utils/
├── pdf-reader/
├── atlassian/
├── status-updater/
├── python/
│ ├── std-llm-client/
│ ├── std-embeddings/
│ ├── std-vector-store/
│ ├── std-mcp-utils/
│ └── std-rag/
├── cli-commands/
├── pulumi/
├── go.mod
└── Makefile
Prerequisites: Go 1.24.1+, Python 3.11+ (for Python packages)
# Install Go dependencies
make deps
# Build all Go packages
make build
# Run all Go tests
make testAllow N operations per time span. Wait(ctx) blocks; LimitCh(ctx) returns a channel.
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
rl := rlm.NewRateLimiter(ctx, time.Second, 5) // 5 ops/sec
defer rl.Stop()
for i := 0; i < 10; i++ {
if rl.Wait(ctx) {
fmt.Println("rate-limited work")
}
}Worker pool scraper that wraps rate-limiter. Inject custom logic via SetScrapeFunc.
s := scraper.NewScraper(5, 3) // 5 rps, 3 workers
s.SetRateLimit(ctx, time.Second, 5)
resultsCh, _ := s.ScrapeURLs(ctx, []string{"https://example.com"})
for res := range resultsCh {
fmt.Printf("%s — %s\n", res.URL, res.Content)
}Auto-detects format, always returns UTC.
t, _ := dttm.ParseTime("25-Dec-2023_15:30:45")
fmt.Println(dttm.FormatTo(t, dttm.Standard))Three conversion strategies with different type-preservation tradeoffs.
type Person struct {
Name string `json:"name"`
Password string `json:"-"`
}
result, _ := gostructutils.StructToMapJSON(Person{Name: "John", Password: "secret"})
// map[name:John] — Password excluded by json:"-"Extract text, search content, fetch from URL, batch process.
text, _ := pdfreader.ExtractTextFromFile("document.pdf")
fmt.Println(text)See pdf-reader/README.md.
MCP client for Jira (stdio), Confluence (stdio), and Rovo (HTTP). Confluence and Rovo startup failures are non-fatal.
cfg := atlassian.Config{
Jira: atlassian.ServerConfig{
Command: "npx",
Args: []string{"-y", "@atlassian/mcp-jira"},
Env: map[string]string{"JIRA_TOKEN": "..."},
},
}
client, _ := atlassian.NewClient(cfg)
defer client.Close()Generates a markdown status report for a date range by pulling Jira tickets and GitHub PRs, then optionally rewriting them into clean past-tense bullets via Claude Haiku.
Setup:
cp status-updater/sample.env .env
# fill in ANTHROPIC_API_KEY, GITHUB_REPOS, JIRA_* values
source .envRun:
go run ./status-updater --from 2024-01-01 --to 2024-01-07
go run ./status-updater --from 2024-01-01 --to 2024-01-07 --output report.mdJira source priority: acli (if on PATH) > REST API (JIRA_URL + JIRA_EMAIL + JIRA_API_TOKEN) > MCP server.
All packages live under python/ and follow a provider-abstraction pattern.
Abstract LLMClient base with concrete provider implementations.
from std_llm_client import LLMClient, MessageAbstract EmbeddingProvider supporting OpenAI, Voyage, and local models.
from std_embeddings import EmbeddingProvider, EmbeddingConfigAbstract VectorStore with pluggable backends. Operates on Document and SearchResult types.
from std_vector_store import VectorStore, DocumentUtilities for building MCP servers: tool registration, type definitions, request handling.
from std_mcp_utils import MCPServer, toolEnd-to-end RAG pipeline composing std-llm-client, std-embeddings, std-vector-store, and a text chunker.
pipeline = RAGPipeline(llm=client, embedder=embedder, store=store)
response = pipeline.query("What is the refund policy?")make build # Build all Go packages
make test # Run all Go tests
make fmt # Format Go code
make vet # Run go vet
make lint # Run golint
make deps # Download and tidy dependencies
# Per-package tests
go test -v ./pdf-reader/...
go test -v ./dttm/...
go test -v ./rate-limiter/...
go test -v ./go-struct-utils/...
# Coverage reports
make pdfreader-test-cov
make dttm-test-cov
make gostructutils-test-covgithub.com/ledongthuc/pdf— PDF parsinggithub.com/pkg/errors— enhanced error handlinggithub.com/mark3labs/mcp-go— MCP client/server frameworkgithub.com/docker/go-units— unit conversiongithub.com/spf13/cast— type casting