feat: migrate skills review desk to astro

This commit is contained in:
Marcos Paulo
2026-09-05 16:54:37 +00:00
parent 107e429fb9
commit 71e4775573
66 changed files with 8184 additions and 96 deletions
@@ -0,0 +1,74 @@
# Netcracker House Style
The voice and shape unslop rewrites toward when nothing else is specified.
This is the default, not a mandate — pages with a stated owner voice
override this list.
## Sentence
- Active voice by default.
- One idea per sentence. Two if they're tightly coupled.
- Sentence length mostly 825 words. Long sentences only when the structure
is parallel.
- No run-on lines (>200 chars) in body paragraphs. Code and tables exempt.
## Paragraph
- First sentence carries the claim.
- Body sentences support it.
- Last sentence ties it to the next paragraph or to a link.
- 36 sentences for most paragraphs. Lists break up long paragraphs; they do
not replace them.
## Headings
- Verb-first when possible: "Run the migration" not "Migration".
- Question headings only when the body answers the question in the first
sentence.
- No emoji in h1 / h2. Emoji ok in h3 and below when it's a stable convention.
## Lists
- Parallel grammatical form across items.
- One concept per item. Two ideas → two items.
- Bullet list for unordered; numbered list for steps.
## Tables
- Column headers in `Title case`.
- Numbers right-aligned in monospace columns; labels left-aligned in prose.
- Empty cells get `<empty>` or are filled — never blank.
## Code
- Inline code for file names, env vars, commands, identifiers.
- Fenced blocks with language tag for anything longer than one line.
- Comments inside code blocks explain *why*, not *what*.
## Links
- Anchor text describes the destination. "click here" is a smell.
- External links open in same tab; the Confluence renderer adds the
indicator.
- Internal page links by title, not by URL — rename the page and the link
follows.
## Voice
- First person plural ("we") when the team owns the page.
- Third person when describing a component or a product.
- Avoid "I" on team-owned pages.
- Avoid the passive voice when it hides who did the thing.
## What unslop does not change
- Code blocks, command output, error messages, log lines.
- Customer quotes (marked as such).
- Commit messages, ticket numbers, identifiers.
- Acronyms the audience uses.
## Calibration
A page rewritten by unslop should pass the "would a senior engineer send
this to their team?" test. If yes, ship. If the page still reads corporate,
escalate to the owner — unslop is not the right tool for that.
@@ -0,0 +1,75 @@
# Slop Tells
A worked catalogue of the phrases that mark prose as AI-generated. The
`unslop` skill greps the draft for each row and reports a fix.
The list is heuristic. A page can match several tells and still read well;
a page can match none and still feel corporate. Use this as a checklist, not a
verdict.
## High-frequency tells
| Tell | Example | Default fix |
|------|---------|-------------|
| Ornamental hedging | "It's important to note that…" | Delete the preamble |
| Breathless transition | "Let's dive in!", "Now, let's explore…" | Replace with the next fact |
| Vague intensifier | "really", "very", "quite", "rather" (when not load-bearing) | Delete |
| Symmetric padding | "X is Y. X is also Z. Both X's are…" | Pick the one that matters |
| AI résumé | "With over X years of experience…" | Replace with the actual fact |
| Performative caveat | "It's worth mentioning that…" | Delete or move to the conclusion |
| Marketing tone | "seamlessly", "robust", "powerful", "leverage", "cutting-edge" | Replace with the specific capability |
| Triplet | "fast, reliable, and scalable" | Pick the one that is actually true |
| Heading question | "Why is X important?" | State the answer, not the question |
| Sign-off | "Hope this helps!", "Let me know if you have questions!" | Delete |
| Throat-clearing | "In this article, we will…" | Delete the article and start with the subject |
| Mirror transition | "As we have seen…" | Replace with the actual finding |
| Manufactured urgency | "In today's fast-paced world…" | Delete |
| Generic closer | "To learn more, contact…" | Replace with the actual link or contact |
## Mid-frequency
| Tell | Example | Default fix |
|------|---------|-------------|
| Bureaucratic noun | "perform a verification of" | "verify" |
| Nominalised verb | "the implementation of the feature" | "implementing the feature" |
| Possessive hedge | "in our experience" | Drop unless backed by data |
| Padded qualifier | "essentially", "basically", "fundamentally", "literally" | Delete |
| Redundant pair | "each and every", "first and foremost", "any and all" | Pick one |
| Process name as action | "we will be performing a build" | "we will build" |
| Apology | "Apologies for the inconvenience" | Replace with the fix |
| Hyperbole | "game-changer", "revolutionary", "paradigm shift" | Replace with the actual claim |
| Cult of positivity | "We are excited to announce…" | Replace with the news |
| Generic advice | "Best practices include…" | Replace with the specific practice |
## Low-frequency (still flag)
| Tell | Example | Default fix |
|------|---------|-------------|
| Anachronism | "in the year 2026" | Drop the year unless it disambiguates |
| Self-reference | "this article", "this section", "as stated above" | Replace with the thing |
| Passive that hides the actor | "It was decided that…" | "We decided…" |
| Telegraphic metaphor | "drowning in data", "needle in a haystack" | Replace with the literal state |
| Fake precision | "in 90% of cases" | Replace with the source |
## What is NOT slop
- Technical jargon used precisely (`asynchronous`, `idempotent`,
`backpressure`).
- Repetition for emphasis that the reader actually needs.
- Headings that match a list of canonical section titles (`Overview`,
`Steps`, `Verification`).
- Code, command output, error messages, customer-quoted text.
- Acronyms and abbreviations the audience knows.
## Cluster detection
Slop tends to cluster. A single slop line in 30 is a minor fix. Five slop
lines in 10 means the author wrote the paragraph by stream-of-prompting; the
whole section should be rewritten by hand. The `unslop` skill flags cluster
sections as `rewrite-block` rather than proposing per-line fixes.
## When to escalate
A draft that reads well but uses a non-AAVE corporate voice should not be
unslopped into something else; flag it for the author. The skill rewrites
*slop*, not *voice*.