# Hedge-Ops Software
URL: https://hedge-ops.com/
Software & Solutions. A data-driven approach to career management.
---
# InSpec Tutorials
URL: https://hedge-ops.com/inspec/
Learn InSpec compliance as code with this step-by-step tutorial series. From Hello World to Azure resource validation.
Learning InSpec is completely approachable, and if you follow these tutorials, you'll be writing compliance as code in no time!
## Tutorial Series
- [Day 1: Hello World](/posts/inspec-basics-1)
- [Day 2: Command Resource](/posts/inspec-basics-2)
- [Day 3: File Resource](/posts/inspec-basics-3)
- [Day 4: Custom Matchers](/posts/inspec-basics-4)
- [Day 5: Creating a Profile](/posts/inspec-basics-5)
- [Day 6: Ways to Run It and Places to Store It](/posts/inspec-basics-6)
- [Day 7: How to Inherit a Profile from Chef Compliance Server](/posts/inspec-basics-7)
- [Day 8: Regular Expressions](/posts/inspec-basics-8)
- [Day 9: Attributes](/posts/inspec-basics-9)
- [Day 10: Attributes with Environment Variables](/posts/inspec-basics-10)
- [Day 11: Validating Azure Resources with InSpec Azure](/posts/inspec-basics-11)
## Additional Resources
- [Setting Up Compliance](/posts/setting-up-compliance)
- [Tour of Chef Compliance](/posts/tour-of-chef-compliance)
---
# Blog Posts
URL: https://hedge-ops.com/posts/
---
# How We Work
URL: https://hedge-ops.com/services/
Three engagement types — Audit, Sprints, Retainer — designed to align delivery, organization, and relationships.
---
# Impeccable Design
URL: https://hedge-ops.com/posts/impeccable-design/
Learn how to deslop your website with Impeccable.
Don't worry, you're not the only one who is using AI to create your website. If you're a solopreneur or someone just getting started trying to validate your idea, you probably can't afford a great marketing team to create your website. So the first iteration is likely going to be an AI-generated affair.
The very first website design that I created was total AI slop. No shame in admitting that. That was back when everyone was super excited about creating things _quickly_ with AI that would otherwise take weeks. The term "AI slop" hadn't been coined yet, but it was surely on the horizon.
As time went on, I started to realize how crappy my website design was, and people were telling me that it confused them. So I began iterating on it, and honestly, I am still iterating based on data. My style, taste, messaging, and branding cannot be replaced with AI if I am to expect positive results. I need to stand confident in those choices, and that means that I can't let AI hijack those choices.
But what if I don't know if I'm deluded? Well, that's where [Impeccable](https://impeccable.style/) comes in.
> The missing design vocabulary for agents. Impeccable strips the AI slop tells and bad defaults out of every design discipline, from type to motion to copy. -- impeccable.style
So basically, it trains your AI agent on all the good skills that real designers use so that it can evaluate your site and tell you how to make it better. Truth be told, if you have the budget, then I still recommend that you pay a human designer, but if you don't, this is the next best thing.
Here's a preview:
- [The Setup](#step-1-the-setup): Install Impeccable and teach it who you are and what you're building.
- [Documenting what's there](#step-2-documenting-what-s-there): Capture your current design as a baseline.
- [Diagnose](#step-3-diagnose): Let it grade your site and find the slop.
- [Fix](#step-4-fix): Work through the problems, one command at a time.
- [Iterate live (optional)](#step-5-iterate-live): Fine-tune elements right in the browser.
- [Polish & re-score](#step-6-polish-re-score): Smooth the rough edges and reassess your grade after changes.
Let's get started!
## Step 1 - The Setup
### Prerequisites
- Node.js is installed and `npx` is on your path.
- Your site exists in code.
- An AI agent harness is installed (Claude Code, Codex CLI, Cursor CLI, etc).
Impeccable does allow you to start from scratch, but for this tutorial, I will assume that you're starting from an existing site that you're managing with git. I created a simple, single-page, static website called "Aspen" for this exercise. You're welcome to clone it from [here](https://github.com/hedge-ops/aspen) if you'd like.
### Installation
The first thing you're going to want to do is install [Impeccable](https://impeccable.style/). If you install it globally (`~`), then all of your projects will have access to it. Otherwise, you may install it at the root of the repository that houses your website. Run this to install:
```bash
npx impeccable install
```
When you run this, it will detect which agent you will use and install for all detected harnesses. Then it will ask if you want to use the tool just for this project locally or all projects globally. Choose which you prefer.

### Initialization
#### [`/impeccable init`](https://impeccable.style/docs/init/)
In your agent session, run [`/impeccable init`](https://impeccable.style/docs/init/), and stop!
This is the most important step. Don't click your way through this. I know you want to get to the fun, design stuff, but this is where the foundation is laid. Don't let your agent lay the foundation or you're going to be back in the slop-camp that you started in.
There is a risk that your agent will give you multiple choice questions, but resist the urge to use its choices. Instead, force yourself to write your own answer to every question. Hopefully, you've done some marketing exercises answering some of these questions already, in which case you can draw from your resources, but if you have not, then take as much time as you need to get these answers crystal clear.
For my tutorial, I asked it to not provide multiple choice answers, and this is what it asked in return:
```txt
1. Who is this for? Picture the specific person who lands on this page - what's going on in their world, and what made them come looking?
2. What is the thing, and what job does it do for them? In your own words, what does it actually help them accomplish?
3. When they leave the page, what's the one thing you most want to have happened - a concrete action, a clear understanding, or a particular feeling?
```
A common rookie mistake of software companies, one that I have made myself, is to cast too wide of a net. We see all the possibilities for anyone in the world to use our software so we keep the messaging vague to not push anyone away. While it's true that our total addressable market (TAM) is ginormous and that there are so many use cases for our software, the messaging ends up super vague, not speaking to anyone. Right now, you need one beachhead, the ideal customer that you want to speak to today, the one you have in mind when you're building.
Before you answer any of your agent's questions, do this fill-in-the-blank exercise as thoroughly and specifically as you can:
> Our `[product/service]` helps `[customer segment]` who want to `[jobs to be done]` by `[verb]` `[customer pain]` and `[verb]` `[customer pain]`, unlike `[competitor's solution]`.
And if you haven't validated this statement with real customer feedback, then that's your homework. Talking to as many people as possible will make this exercise much easier, so if it's very difficult, that's your signal to put the design on hold while you go set up some conversations. (Stay tuned, as this is an upcoming topic I plan to cover.)
The next round of questions my agent asked me was more tailored to my previous answers, so yours will likely be different:
```txt
Round 2 - personality and guardrails. Three questions:
1. Voice in three words. If this brand were a person talking to that stretched-thin solopreneur, how would you describe its personality? Reach for concrete, physical words ("warm and direct and unhurried") over "modern/clean."
2. References - and the specific thing about each. Name 1–3 actual sites, apps, or brands whose feel is right, and the one concrete thing each nails for you. (Equally useful: anything you've seen in this space that feels wrong - an anti-reference - and why.)
3. Accessibility bar. Any requirement to lock in (e.g. WCAG 2.1 AA contrast, keyboard nav, reduced-motion), or known user needs I should design around?
```
This is where your taste comes into play. Think of the adjectives that describe the vibe you want to portray.
My answers to this for my fake website, Aspen, were:
```txt
1. warm, confident, encouraging, honest
2. impeccable.style, elegant ski lodge chic, minimalist, luxury; anti-references include: loud, flashy, crowded, like salesforce.com, lattice.com
3. your recommendation
```
After you answer these questions, your agent is going to create a first pass at a `PRODUCT.md` file. This will contain information about your:
- Users
- Product purpose
- Brand personality
- Anti-references
- Design principles
Go ahead and click `Yes` that you want it to create that, but you better believe we're going to come back and edit that. When you click `Yes`, it will create another file called `.impeccable/live/config.json` and may update your `CLAUDE.md`.
When that is complete, open up your newly created `PRODUCT.md` file, and camp out there for a while. Go over it with a fine-tooth comb. I know, I know, you want to move on, but _this is the work_, y'all.
Read through every line. If you start to gloss over what you're reading, take that as a sign that it's not clear enough. Delete the line and write it in your own words. Likewise, if there's just too much information in there, delete anything that's not adding clarity, anything that's not a sharp, concise thought.
## Step 2 - Documenting what's there
### [`/impeccable document`](https://impeccable.style/docs/context/)
After you complete your initialization, your agent will likely tell you that it's time to run [`/impeccable document`](https://impeccable.style/docs/context/). If you were starting a new project, then you would choose which direction to take your colors and styles at this point using the `--seed` flag. But since we're editing an existing project, your agent will read from your existing CSS and templates, and just document what's already there.
Don't worry, you aren't stuck with that design! You can say yes to it creating your `DESIGN.md` because it's just documenting it so that you have a starting point. It will edit this file as you go through the other steps later.
Before you move onto the next step, though, get an idea for what kind of style you want to migrate to. If you don't know what your style is, then go dig around. Find 2-3 real sites or brands that you really love and want to emulate, and find a couple more that you hate and want to avoid. You started this exercise of determining what you like and dislike when you were doing your `init`, so you're just refining it here.
When your agent is finished with this step, it will have written `DESIGN.md` and `.impeccable/design.json`. Then it will probably tell you to run [`/impeccable critique`](https://impeccable.style/docs/critique/).
## Step 3 - Diagnose
### [`/impeccable critique`](https://impeccable.style/docs/critique/)
Moment of truth! AI is going to tell you where the AI slop is based on the documents you've created thus far. Does your site look like it should according to the documents?
Run [`/impeccable critique`](https://impeccable.style/docs/critique/), and wait for the painful truth. It will grade you on the [10 industry standard heuristics](https://www.nngroup.com/articles/ten-usability-heuristics/). Here is the verdict on my fake "Aspen" website:
```txt
Design Health Score
#: 1
Heuristic: Visibility of System Status
Score: 2
Key Issue: Every CTA (Download, Get Started)
points to # - no destination, no feedback
────────────────────────────────────────
#: 2
Heuristic: Match System / Real World
Score: 3
Key Issue: Plain, human copy; the grove metaphor
is consistent and clear
────────────────────────────────────────
#: 3
Heuristic: User Control and Freedom
Score: 2
Key Issue: Anchor nav works, but the primary
action leads nowhere
────────────────────────────────────────
#: 4
Heuristic: Consistency and Standards
Score: 3
Key Issue: Internally consistent (emerald/amber, pill buttons, card rhythm)
────────────────────────────────────────
#: 5
Heuristic: Error Prevention
Score: 3
Key Issue: n/a - no forms to get wrong
────────────────────────────────────────
#: 6
Heuristic: Recognition Rather Than Recall
Score: 3
Key Issue: Clear nav labels; "Align/Guide/Partner/Network" introduced without definition
────────────────────────────────────────
#: 7
Heuristic: Flexibility and Efficiency
Score: 2
Key Issue: No skip-link; mobile nav disappears
with no replacement
────────────────────────────────────────
#: 8
Heuristic: Aesthetic and Minimalist Design
Score: 2
Key Issue: Reads generic-AI; visual treatment fights the brand you defined
────────────────────────────────────────
#: 9
Heuristic: Error Recovery
Score: 2
Key Issue: n/a - no states, but also no 404/empty handling anywhere
────────────────────────────────────────
#: 10
Heuristic: Help and Documentation
Score: 2
Key Issue: No FAQ, pricing, or support; "Free to try" unexplained
────────────────────────────────────────
#: Total
Heuristic:
Score: 24/40
Key Issue: Acceptable - works, but generic and off-brand
Anti-Patterns Verdict
Does this look AI-generated? Yes - unmistakably.
```
AI clearly assessed that this is unmistakably an AI-generated website. Most sites land between 20-32, so 24 isn't an absolute failure, but the verdict is that it's _generic_ and _uninspired_. It goes on to say what's working, what's not working, and what the priority issues are.
My agent showed me the `Priority Issues`, for example, here's just one of them:
```txt
- [P1] Visual identity is generic and off-brand.
The emerald/amber emoji-grove reads as friendly-SaaS, the exact register PRODUCT.md rejects. Why it matters: a quiet-luxury audience judges credibility on craft; this looks templated.
Fix: re-skin to the ski-lodge palette (evergreen + ember on snow/wool) with the Spectral/Hanken type pairing. Command: /impeccable typeset then /impeccable colorize (or /impeccable shape for a fuller rework).
```
Having the exact commands to run for each problem is really useful. I like that it also tells you what's working so that you don't try to "fix" that.
It will then ask you if it can create a file called `.impeccable/critique/_tmp_body.md`, where it's going to track the critiques. Once it does that, it's ready to get to work, and it asks you where you want to start:
```txt
Now, to shape the action plan:
────────────────────────────────────────────────────
← ☐ Priority ☐ Scope ☐ Copy ✔ Submit →
The biggest finding is that the visuals (emerald/amber emoji-grove) contradict the quiet-luxury brand, while the copy is already on-voice. Where do you want to start?
1. Re-skin to the brand
Tackle the P1 visual-identity gap first: palette + type toward ski-lodge chic (evergreen/ember/snow, Spectral + Hanken). Highest-impact, biggest scope.
2. Kill the loudest tells
Quick wins first: remove the gradient headline and the emoji-card grid pattern. Smaller, fast, lowers the 'AI made this' read immediately.
3. Fix the functional gaps
Mobile nav disappearing + dead CTAs first - the P2 usability issues - before touching aesthetics.
4. Type something.
───────────────────────────────────────────────────
5. Chat about this
```
And hey, if you're like me, you're overwhelmed at this point, and that's okay! However you answer, you've got two ways to actually proceed:
1. Jump in and start tackling it. If you say that you want to work on it, it will tell you which commands to start running.
2. Tell it to create a ticket for each area of work, with enough detail and context for another agent to work on it. (This assumes that your agent has permission to create tickets in your system.)
Note that you can run `critique` whenever you want. It will always give you a current assessment.
## Step 4 - Fix
### `/impeccable