Home/Blog/How to Write Buck2 TARGETS from a Locked Package List
Blog

How to Write Buck2 TARGETS from a Locked Package List

P
promptstudio
How to Write Buck2 TARGETS from a Locked Package List

Buck2 files rot when they load rust_library that nobody locked. The package list named prelude python. Quote that pin. Skip extra cells.

The matching generator is the Buck2 TARGETS Spec from a Locked Package List (No Invented Rules or Configs) (Buck2 Targets Spec From A Locked Package List No Invented Rules Or Configs) prompt. Browse related cards in the PromptDig library (Browse more prompts). When a filled run survives, share the version you actually use (Share a prompt).

Print the rule lock table first

Write Buck2 TARGETS from a locked package list. Do not invent rules, prelude loads, or extra configs. Start by filling Inputs, not by asking the model to remember last week's run. If a field is blank, write NONE or NOT IN INPUTS and leave it blank through Generate. The card is built so the model cannot honestly invent a number, owner, URL, or command that you did not paste.

Paste these fields before you hit run:

Package list I lock (names, kinds, srcs I allow): [Packages]
Rules I lock with cells (or UNKNOWN): [Rules]
Buck2 version I lock (or UNKNOWN): [Version]
Cell name I lock: [Cell]
Words I must not use: [Banned]
What I must never invent (rules, prelude, extra srcs, .buckconfig keys): [Never]
Output format: [Format]
Language for comments: [Lang]
Test targets I allow (or NONE): [Tests]

That inventory is the honesty ledger. Anything that does not appear there is forbidden in the draft. If you catch yourself adding a nice-to-have after the run, you are no longer using the card. You are ghostwriting. Put the extra fact in Inputs and run again.

Write TARGETS only from the package list

Generate is numbered on purpose. Do not skip a step because the first paragraph looked done. The early steps exist to stop later prose from smuggling claims.

Walk the Generate list in order:

  1. Honesty ledger: Packages, Rules, Version, Cell, Tests, Lang. Forbidden: invented rule, invented prelude, extra srcs.
  2. Rule lock table: each Rules line quoted. If a load needs a rule not listed, write NOT IN INPUTS.
  3. Cell map: cell name from Cell. Do not invent a second cell. .buckconfig keys only if Inputs name them.
  4. TARGETS: targets only from Packages. srcs only listed files. visibility only if Packages name it.
  5. Refuse list: bazel_dep, pants.toml, cmake_minimum_required, prelude load not in Rules.
  6. Tests: quote Tests or write NONE. Do not add a catch-all test suite.
  7. Never: do not write http_archive. Do not invent a registry host. Do not mint extra .buckconfig.
  8. Compliance pass: quote Banned and Never hits. Cut them. Format as Format.

If a step asks for a version lock, quote the version from Inputs in the output. If a step asks for a refuse list, keep the refuse list in the published artifact, not in a sidebar you delete. Reviewers should see what the model was not allowed to do.

Refuse Bazel dumps and extra srcs

Most failures are the same shape: a missing field gets a confident fill. A conversion rate appears. A Gradle task appears. A flash point appears. A caption appears on a job that asked for slide text only. Your review is to search the draft for numbers, names, and commands, then grep Inputs. No match means cut.

Honor the constraints as hard stops, not vibes:

  • Buck2 TARGETS from Packages and Rules only. Not Bazel and not Pants.
  • Never invent rules, prelude cells, or extra srcs.
  • Only Tests named in Inputs.
  • No emojis.

When the card says not legal advice, not certification, not an exam dump, or not a caption engine, that sentence belongs at the top of the output. Deleting it to look more finished is how you inherit risk.

Keep test targets NONE if the list omitted them

Finish with the compliance pass the prompt already asks for. Quote the banned-word hits. Cut them. Print character counts when the job has a cap. Print word counts when the job has a budget. List gaps as gaps. Five missing facts are more useful than one smooth paragraph.

Tags on the card (buck2 targets spec, no invented rules, package list lock) are a reminder of the job shape, not an invitation to wander into a neighboring cluster. If you need a different surface, open a different PromptDig card rather than stretching this one.

Fill the card, then run

Replace every bracket. Run on ChatGPT, Claude, or Gemini. Read the ledger first, then the artifact. If the model invents a commit, KPI, DOI, PEL, bid, or logo, discard the run. Tighten Inputs. Run again. Share the filled card that survived, not the first draft that sounded done.