analyzing-options
Analyzing different approaches for a task or problem with structured comparisons, effort…
Applying or switching a repository's license (Apache 2.0, Elastic License v2, or Proprietary): rewrites the LICENSE file, updates Go/TS source headers, sets SPDX identifiers, and validates consistency after user confirmation. Use when asked to set, apply, or switch a license, or
$ npx -y skills add LerianStudio/ring --skill applying-licenses --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/applying-licensesContext preview
The summary Claude sees to decide when to auto-load this skill.
Applying or switching a repository's license (Apache 2.0, Elastic License v2, or Proprietary): rewrites the LICENSE file, updates Go/TS source headers, sets SPDX identifiers, and validates consistency after user confirmation. Use when asked to set, apply, or switch a license, or
name: ring:applying-licenses description: "Applying or switching a repository's license (Apache 2.0, Elastic License v2, or Proprietary): rewrites the LICENSE file, updates Go/TS source headers, sets SPDX identifiers, and validates consistency after user confirmation. Use when asked to set, apply, or switch a license, or when scaffolding a service with no LICENSE. Skip when license, headers, and SPDX already match, or for non-code repos."
**Complementary:** ring:running-dev-cycle, ring:implementing-tasks
You orchestrate. Agents update source headers. NEVER apply a license without user confirmation.
| License | SPDX | Use Case | |---------|------|----------| | Apache 2.0 | `Apache-2.0` | Open source (e.g., Midaz core) | | Elastic License v2 | `Elastic-2.0` | Source-available products | | Proprietary | `LicenseRef-Proprietary` | Internal/closed repositories |
// Copyright (c) {YEAR} {COPYRIGHT_HOLDER}
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.// Copyright (c) {YEAR} {COPYRIGHT_HOLDER}
// Use of this source code is governed by the Elastic License 2.0
// that can be found in the LICENSE file.// Copyright (c) {YEAR} {COPYRIGHT_HOLDER}. All rights reserved.
// This source code is proprietary and confidential.
// Unauthorized copying of this file is strictly prohibited.TypeScript: wrap the same text in `/** ... */`.
Orchestrator runs directly:
# 1. Detect LICENSE file ls LICENSE LICENSE.md LICENSE.txt 2>/dev/null head -5 LICENSE 2>/dev/null # 2. Identify type grep -l "Apache License" LICENSE* 2>/dev/null → apache grep -l "Elastic License" LICENSE* 2>/dev/null → elv2 grep -l "All rights reserved" LICENSE* 2>/dev/null → proprietary # 3. Sample current source headers head -5 $(find . -name "*.go" ! -path "*/vendor/*" ! -name "*.pb.go" | head -5) head -5 $(find . -name "*.ts" ! -path "*/node_modules/*" | head -5) # 4. Detect language test -f go.mod && echo "Go project" test -f package.json && echo "TypeScript project"
Determine:
Present summary and wait for explicit APPROVED:
Current license: {current_license}
Target license: {target_license}
Language: {language}
Copyright: {copyright_holder} ({year})
Changes:
- LICENSE file: CREATE/REPLACE with {target_license}
- Source headers: UPDATE {N} files
- README badge: UPDATE
Proceed? (APPROVED / CANCEL)STOP if user does not confirm.
After confirmation:
**1. Replace LICENSE file** (orchestrator writes directly):
**2. Update source headers** (dispatch agent):
Task:
subagent_type: "ring:backend-go" # use "ring:backend-ts" for TS/JS sources
description: "Update license headers to {target_license}"
prompt: |
Update all source file headers to {target_license} format.
Copyright: {copyright_holder}, {year}
Files to update:
- Go: find . -name "*.go" ! -path "*/vendor/*" ! -name "*.pb.go" ! -name "*/mocks/*"
- TS: find . -name "*.ts" -o -name "*.tsx" ! -path "*/node_modules/*"
Header template: {header_template}
For each file:
1. Remove existing copyright block (first comment block if it mentions Copyright)
2. Add new header at top of file
3. Preserve package declaration and imports
Output: list of files updatedOrchestrator runs:
# All files should have consistent headers
grep -rL "Copyright (c)" $(find . -name "*.go" ! -path "*/vendor/*" ! -name "*.pb.go")
grep -rL "Copyright (c)" $(find . -name "*.ts" ! -path "*/node_modules/*")
# LICENSE file exists and has correct type
head -3 LICENSE | grep -i "{target_keyword}"Report:
Proven engineering practices, enforced through skills. Ring is a comprehensive skills library and workflow system for AI agents that transforms how AI assistants approach software development.
Repo: LerianStudio/ring
Analyzing different approaches for a task or problem with structured comparisons, effort…
Auditing a service's production readiness against Ring engineering standards across base…
Cleaning redundant and obvious comments following clean code principles while preserving…
Commit changes with scope allowlist enforcement, atomic grouping, GPG-signed conventional…
Creating a handoff document that captures session state (completed work, decisions, open…
Creating an isolated git worktree for parallel branch work: selects the directory by priority…