agentsclimarketplace

Systems languages core

Skill Sheshiyer/skill-clusters/skills/systems-languages-core

Shared reference for the systems-languages cluster: the language-axis decision (Go · C++ · Perl), the write → prove → harden lifecycle each spoke plugs into, and the per-language idiom / error-model / tooling matrix. USE WHEN choosing conventions, picking a test or coverage command, or deciding how strict to be about input safety across Go, C++, or Perl.From its SKILL.md

Install
npx -y skills add Sheshiyer/skill-clusters --skill systems-languages-core

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.4 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

Systems Languages Core

Shared model for the systems-languages cluster. The patterns, testing, and security spokes for Go, C++, and Perl all plug into the same lifecycle — keep the decisions and toolchain consistent here so no spoke contradicts another.

1. The decision the cluster turns on: language axis → lifecycle

There is no cross-language framework choice here — each spoke is a single language. The one decision is which language you are in, which then fixes the idiom, the error model, and the toolchain. From there every task walks the same three-stage lifecycle:

Language (Go · C++ · Perl) ──> write ──> prove ──> harden
                                 │          │          │
                       patterns / standards │   (Perl) security
                                       testing spoke
  • write — the language's conventions spoke (golang-patterns, cpp-coding-standards, perl-patterns).
  • prove — the matching testing spoke (golang-testing, cpp-testing, perl-testing), TDD red→green→refactor.
  • harden — only Perl ships a dedicated security spoke (perl-security), because untrusted input + the shell + DBI is Perl's defining hazard. Go and C++ fold safety into their write stage (validate inputs, RAII, explicit errors).

Rule: pick one language and stay in its lane — don't carry Go's error returns into C++ exceptions or Perl's dynamic looseness into Go. Resolve the language first; the rest cascades.

2. Shared conventions (every spoke)

  • Tests first. All three testing spokes are TDD-first: write a failing test, make it pass, refactor. Test behavior through the public surface, not internals.
  • Errors are explicit, not swallowed. Go: wrap with fmt.Errorf("...: %w", err), never _-ignore. C++: custom exception types, throw by value / catch by reference, RAII so nothing leaks. Perl: checked syscalls, Try::Tiny or native try/catch (5.40+), never bare eval without a check.
  • Immutability / least privilege by default. C++ const/constexpr unless mutation is intended; Go's useful zero values and small interfaces; Perl use constant/Moo defaults over mutable globals.
  • Validate every external input. Allowlist over blocklist. In Perl this is enforced (taint mode + untaint regex); in Go/C++ it is a discipline the patterns spokes describe.
  • No sleep-based synchronization in tests. Use conditions/latches/channels; keep tests deterministic and isolated; clean up temp dirs.
  • Coverage target ≈ 80%+ on business logic; 100% on critical paths. All three testing spokes converge on this.

3. Per-language idiom · error model · tooling matrix

LanguageIdiom anchorError modelTest frameworkRunner / buildCoverageLint / formatPatterns spokeTesting spoke
Goaccept interfaces, return structs; useful zero value; context first argerror values + %w wrap; errors.Is/Asstdlib testing (table-driven), fuzzing 1.18+go test ./... (-race)go test -cover / go tool covergofmt, goimports, go vet, golangci-lintgolang-patternsgolang-testing
C++RAII, Rule of Zero/Five, smart pointers, enum class, concepts (C++17/20/23)exceptions (custom types, throw-by-value) + noexcept; RAII cleanupGoogleTest / GoogleMockCMake + CTest (gtest_discover_tests)gcov/lcov or llvm-cov; ASan/UBSan/TSanC++ Core Guidelines; clang-format/clang-tidycpp-coding-standardscpp-testing
Perluse v5.36, signatures, postfix deref, Moo/Corinna OOTry::Tiny / native try/catch (5.40+); checked syscalls; taint modeTest2::V0 (or Test::More)prove -lr (-j parallel)Devel::Cover (cover -test)perltidy, perlcritic (+ security theme)perl-patternsperl-testing (+ perl-security)

4. Version / language baselines

  • Go — modern modules, Go 1.18+ for generics & fuzzing, 1.22+ recommended for CI examples.
  • C++ — C++17/20/23; concepts and ranges assume C++20.
  • Perl — target 5.36+ (use v5.36 enables strict/warnings/signatures); native try/catch is 5.40+, the class keyword (Corinna) is 5.38+. Pin CPAN deps in cpanfile.

5. Shared guardrails

  • One language per task; don't mix idioms or toolchains across spokes.
  • TDD-first: a failing test before the fix; deterministic, isolated tests; no sleep sync.
  • Errors are explicit and checked — never silently ignored (Go _, empty C++ catch, bare Perl eval).
  • Validate all external input with allowlists; constrain filesystem and process execution.
  • Perl-specific (non-negotiable when input is untrusted): taint mode (-T) on web/CGI, three-arg open, list-form system/exec, DBI placeholders for every query, context-correct output encoding. State any widening of an input surface explicitly. → perl-security
  • Immutability / const / least privilege by default; pin language and dependency versions.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,758. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.