Skip to content
cccskills
FreePublished on GitHubEnglish overview

Proposals

Prepare and manage Carbon evolution proposals using the project’s template and conventions. Connect the proposal to project goals, explain alternatives and tradeoffs, incorporate decisions from a lead issue, and keep its abstract aligned with the pull request description.

OriginalShow the original description

Instructions for writing, submitting, and managing Carbon evolution proposals.

carbon-language/carbon-lang33,929 stars(GitHub 33,929 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Drafting a new Carbon evolution proposal
  • Turning a decided issue into a standalone proposal
  • Comparing design alternatives and tradeoffs
  • Aligning a proposal abstract with its PR description

Overview

What it does

Guides the creation, submission, and management of Carbon evolution proposals. For a new proposal, it confirms the requested title and uses a helper script to create a template. It then shapes the content to match existing proposals and the project’s goals and principles. The proposal describes the advantages and disadvantages of alternatives, including why they were not selected, and keeps its abstract aligned with the pull request description. When formalizing an existing discussion, it uses the lead issue, comments, and related materials to document the decision in a proposal that can be read on its own.

When it helps

Use it to propose a change to Carbon’s language or design, or to turn a decision already made in discussion into a written record. It can also help compare options and explain how a decision relates to project goals.

Example requests

  • “Create a new Carbon evolution proposal using the existing template.”
  • “Turn the decision in this lead issue into a proposal that stands on its own.”
  • “Check that the proposal abstract matches the PR description.”

Notes

Create a proposal only when explicitly requested. Before making the PR ready for review, give the user an opportunity to review the proposal.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
AGoodIt requires explicit direction and user review before PR review readiness.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingIt uses a helper script and `gh`; setup steps are not provided.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 26, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md6.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Proposals

<!-- Part of the Carbon Language project, under the Apache License v2.0 with LLVM Exceptions. See /LICENSE for license information. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -->

Overview

This skill provides instructions and best practices for working with proposals. Only create a proposal when explicitly directed as part of the task.

Make sure to confirm the desired title for the proposal as that will govern the filename.

Create a new proposal

  1. Use the helper script: Run ./proposals/scripts/new_proposal.py "Title" to create a templated file and instructions for setting up the PR.
  2. Proposal file: The file will be named proposals/p######-title.md, where ###### is the 6-digit GitHub pull request number and title is a slugified version of the proposal title.
  3. Template: Follow the structure in proposals/scripts/template.md, noting the specific TODO instructions in each section for the content that should be included there.
  4. PR description: Update the pull request description to match the abstract section in the proposal document.

[!IMPORTANT] Do not mark the PR ready for review. The user must have the opportunity to review the proposal produced before asking for any review.

Writing style and best practices

  • Skimmable: Use BLUF (Bottom Line Up Front) or Inverted Pyramid style. Keep it brief, focused, and technical.
  • Match existing proposal style: Review existing proposals (preferring more recent ones with higher numbers) to understand the expected style, wording, and nature of content to include.
  • Connect to goals: In the Rationale section, link to specific goals in /docs/project/goals.md and principles in /docs/project/principles (e.g., error_handling.md, one_way.md).
  • Living design: If the proposal updates design documentation, include those changes in the PR if possible. If deferred, add "TODO" comments pointing to the proposal (e.g., > **TODO:** Document ... adopted in [p######](/proposals/p######-title.md)). For pervasive changes, file a GitHub issue instead of adding many TODOs.

Alternatives considered and leads decisions

There are always alternatives to a proposal, and the proposal should carefully include sections describing all of them and the rationale for not selecting them. Any living design document updates should focus on fully describing the end-state design, and the key motivating aspects of that design. The main proposal should focus on what is changing and why it is changing, and should leave detailed description of the resulting design to the living design document, and why not rationale to the description of each alternative.

  • Cover all the alternatives: Make sure to describe any alternatives considered, even if minor or rejected early.
  • Be specific: Don't be vague about any of the alternatives, or the rationale for not choosing them.
  • Connect to goals or principles: In addition to the rationale section, one of the best rationale structures for rejecting an alternative connects that choice back to the goals or principles relevant.
  • Always frame as a tradeoff: Selecting the proposed direction instead of an alternative is always a tradeoff, with both advantages and disadvantages.
  • Where relevant, cite the leads issue that decides against an alternative, in addition to summarizing the key points, tradeoffs, and rationale for the decision.

[!IMPORTANT] Don't just list the alternatives, create a sub-section for each alternative and carefully describe the alternative, the advantages, disadvantages and what the core of the decision is to reject each alternative.

[!IMPORTANT] Carefully research each alternative in the leads issue in order to provide this clear and comprehensive explanation.

Building from a leads issue

Sometimes a proposal is specifically documenting and formalizing a decided leads issue. When this is the case, carefully research that leads issue, reading the original issue text and every comment on the issue. Also read any linked Google documents, linked issues, examples, gists, or other supplemental information cited.

  • Summarize the leads issue: Ensure you provide a high level summary of the decided direction of the leads issue as the proposal.
  • Capture and document every key aspect of the decision made and factor that led to the decision. It is important that the proposal stands alone, and the leads issue is merely cited for context and history.
  • Stay grounded: Only include alternatives, rationale, and arguments based on what you find in the issue and related documents. No new information should be in the proposal.

Use the gh command line tool to query leads issues in order to carefully examine all of the comments. Follow any mentioned links to gather more data. Refer to the GitHub CLI usage skill for detailed instructions on using the gh tool.

Ask the user to clarify any aspects of the leads issue that are unclear rather than continuing to edit the proposal. If there are questions that you don't find an answer to in the issue, ask this to the user and let them provide an answer that you use as the basis of what to include.

Examples are golden

Heavily leverage examples to illustrate both the specifics of the design being proposed, and the nature of the change being proposed. More examples to illustrate more aspects, corner cases, or provide a more complete understanding are almost always good. Comments in example code should focus on what that part of the example illustrates from the proposal.

Keep the PR description in sync with the abstract

Whenever you edit the abstract or notice differences from the PR description, you should update the PR description to match the abstract. The only exception is to retain any "Assisted-by" or other tags at the end of the description that are only needed there and not in the abstract.

If you are creating or updating a proposal, make sure the PR description in question contains an Assisted-by: tag that is appropriate for describing which AI tool is being used.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Use this skill to read GitHub issue details and comments from the command line with `gh`. It covers issues referenced by number or URL, including issues in other repositories, and keeps access read-only so issue state is not changed.

  • Reading an issue and its full comment history
  • Opening an issue referenced by URL
  • Viewing an issue from another repository
carbon-language/carbon-lang33.9KUpdated Oct 26, 2026

Agent tools

FreeSummary

Use this skill to guide an AI assistant working in the Carbon repository on viewing, searching, and editing files with specialized environment tools. It also sets rules for temporary files and when custom programs may be used.

  • Choosing approved tools to view, search, or edit files
  • Checking where temporary analysis and test files belong
  • Deciding when a custom transformation program is allowed
carbon-language/carbon-lang33.9KUpdated Oct 26, 2026

Bazel usage

FreeSummary

Follow the Carbon project's Bazel workflow through Bazelisk, a version-managing launcher. Learn commands for building targets, running tests and binaries, enabling AddressSanitizer, and refreshing cached state after system dependency changes.

  • Building a Carbon target
  • Running focused project tests
  • Launching a Bazel-built binary
carbon-language/carbon-lang33.9KUpdated Oct 26, 2026

Use this skill to implement builtin functions in the Carbon compiler, from registering a function name and checking its signature to evaluating constant calls and generating LLVM IR for runtime calls. It also covers prelude bindings and focused tests.

  • Registering a new Carbon builtin function
  • Adding compile-time evaluation behavior
  • Lowering runtime builtins to LLVM IR
carbon-language/carbon-lang33.9KUpdated Oct 26, 2026

Code style

FreeSummary

Apply Carbon toolchain conventions for formatting Bazel, C++, Carbon, Markdown, and Python files. The skill also covers clear comments and documentation, accurate names, design choices, and concise commit descriptions.

  • Formatting a changed source file
  • Writing or revising code comments
  • Choosing names that match their meaning
carbon-language/carbon-lang33.9KUpdated Oct 26, 2026

Diagnostics

FreeSummary

Use this skill to add or revise diagnostics in the Carbon toolchain. It explains how to register message kinds, format typed arguments, attach source labels and context, and verify that diagnostics follow the project’s wording and test coverage rules.

  • Adding an error or warning to the Carbon compiler
  • Attaching source locations and explanatory labels
  • Checking diagnostic wording and formatting conventions
carbon-language/carbon-lang33.9KUpdated Oct 26, 2026

See all skills by carbon-language

Report a problem with this skill