Repository navigation
[delight] User Experience Analysis Report - 2026-09-09 #59760
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by Delight. A newer discussion is available at Discussion #59999. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Executive Summary
Today's analysis focused on:
blog/2026-09-09-agent-of-the-day.md,reference/auth-projects.mdx)gh aw compile,gh aw run)craft.md,smoke-test-tools.md)pkg/workflow/engine_inline_definition_validation.go)Overall Quality: Professional overall, with one notable inconsistency in error-message completeness and one workflow whose failure message lacks actionable guidance.
Key Finding:
engine_inline_definition_validation.gogives a full inlineengine:example for thetoken-urlerror but omits equivalent examples for the siblingclient-id,client-secret, andheader-nameerrors in the sameoauth-client-credentialsbranch — an inconsistency that increases friction for users debugging OAuth engine auth.Quality Highlights ✅
Example 1: Excellent reference documentation
docs/src/content/docs/reference/auth-projects.mdxgh aw secrets set+ YAML example, and a "Learn More" cross-link section. Precise, enterprise-appropriate tone throughout.GITHUB_TOKENprovided to every GitHub Actions workflow has repository-level scope only... any workflow step that reads project fields or writes updates must supply a token with explicit Projects permissions." (lines 11-12)Example 2: Well-documented CLI command
cmd/gh-aw/main.go(runcommand, lines 292-317)Longdescription explains interactive-mode behavior, restricts scope clearly ("only works with workflows that have workflow_dispatch triggers"), and theExampleblock lists 10 realistic, incrementally more advanced invocations (from barerunto--jsonoutput).Improvement Opportunities 💡
High Priority
Opportunity 1: Inconsistent OAuth validation error examples - Single File Improvement
pkg/workflow/engine_inline_definition_validation.govalidateEngineAuthDefinition(lines ~137-150), thetoken-urlmissing-field error (line 139) includes a fullExample:block showing the completeengine.provider.authYAML shape. The three sibling checks in the sameoauth-client-credentialscase — missingclient-id(line 142), missingclient-secret(line 145), and missingheader-name(line 149) — return terse one-line errors with no example at all.token-urlerror (guided by the example) but then hits the very next validation error forclient-idgets no comparable guidance, breaking the trust and consistency principle — the same validation function teaches differently depending on which field happens to be missing.client-id/client-secret/header-namethemselves, or scroll back up to the first error's example and guess whether it still applies.Example:block (or a shared example constant) to theclient-id,client-secret, andheader-nameerror messages, matching the pattern already used fortoken-url.Medium Priority
Opportunity 2: Failure message lacks actionable next step
.github/workflows/craft.mdrun-failure: "🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt..."smoke-test-tools.mdfailure message, which names what went wrong ("detected missing tools: {status}"), craft.md's failure message is purely decorative — it doesn't point the user toward the run logs or suggest a next action beyond a vague "another attempt.""🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. Check the run logs above for the compilation error, then retry with /craft."Files Reviewed
Documentation
docs/src/content/docs/blog/2026-09-09-agent-of-the-day.md- Rating: ✅docs/src/content/docs/reference/auth-projects.mdx- Rating: ✅CLI Commands
gh aw compile- Rating: ✅gh aw run- Rating: ✅Workflow Messages
.github/workflows/craft.md- Rating:.github/workflows/smoke-test-tools.md- Rating: ✅Validation Code
pkg/workflow/engine_inline_definition_validation.go- Rating:Metrics
🎯 Actionable Tasks
Here are 2 targeted improvement tasks, each affecting a single file:
Task 1: Add missing examples to OAuth engine-auth validation errors
File to Modify:
pkg/workflow/engine_inline_definition_validation.goCurrent Experience
In
validateEngineAuthDefinition, theoauth-client-credentialscase returns four separate validation errors for four required fields (token-url,client-id,client-secret,header-name). Only the first one (token-url) includes a full YAML example of a correctly configuredengine.provider.authblock. The other three are one-liners with just aSee:docs link.Quality Issue
Design Principle: Trust and Reliability
Users iteratively fixing validation errors expect consistent guidance at each step. Providing a rich example for the first error and none for the next three creates an inconsistent, confusing debugging experience — especially since a user fixing
token-urlwill likely hitclient-idnext and lose the example context.Proposed Improvement
Add the same
Example:block to theclient-id,client-secret, andheader-nameerror messages (or extract it into a shared local variable to avoid duplication).Before:
After:
Why This Matters
oauth-client-credentialsauth hits this validation path at least once during setup.Success Criteria
pkg/workflow/engine_inline_definition_validation.goonlyoauth-client-credentialsfield-missing errors include the same example blockScope Constraint
pkg/workflow/engine_inline_definition_validation.goTask 2: Add actionable guidance to craft.md failure message
File to Modify:
.github/workflows/craft.mdCurrent Experience
Line 47 defines the
run-failuremessage as:"🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt..."— purely stylistic, with no hint about what to check or do next.Quality Issue
Design Principle: Trust and Reliability
Compare this to
smoke-test-tools.md's failure message, which explicitly says "detected missing tools: {status}" — giving the reader concrete information. Craft.md's message gives no comparable signal, forcing users to open the run and search for the cause themselves.Proposed Improvement
Extend the failure message to point users toward the run logs and the retry mechanism (the
/craftslash command).Before:
After:
Why This Matters
/craftinvocation (compilation errors, invalid requests, etc.).Success Criteria
.github/workflows/craft.mdonlyrun-failuremessage names the concrete next action (check logs, retry with/craft)Scope Constraint
.github/workflows/craft.mdmake recompileto regeneratecraft.lock.yml, but that regeneration is a build artifact, not a manual second-file edit)Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
storage.googleapis.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
All reactions