AI-Assisted Greenfield Software Development, Part 7: Implementation Prompts

by John Miller | April 23, 2026

This is the seventh post in the series on AI-assisted greenfield software development. This post builds on the first AI-Assisted Greenfield Software Development - Part 1: Business Requirements and the subsequent posts in the series. If you have not read those posts, you may want to start there.

We'll finish the planning phase by creating implementation prompts that guide AI agents through coding work while keeping generated output aligned with our technology-specific instruction files and architectural vision. In this post, I'll use the planning and persona-agent outputs to define implementation slices with clear dependencies and acceptance criteria. The goal is to move from governance-compliant planning into execution prompts that drive coding tasks with minimal ambiguity.

Up to now, the repository had AI provenance rules and some high-level standards, but it did not yet have a strong model for how AI agents should participate in delivery or how the Academia domain should be decomposed into implementable slices. This post closes that gap by defining the expected agent behavior, formalizing the vertical-slice approach, and documenting the domain workflows those slices are meant to satisfy. That gives both human contributors and AI tools a shared contract: which artifacts matter, how work should be broken down, and what kinds of outputs are acceptable.

Why Implementation Prompts Matter

Planning artifacts are necessary, but they are not enough to drive consistent implementation. Requirements describe what the system should do, architecture explains how the solution should be shaped, and workflow models describe the business domain, but none of those artifacts alone tells an AI agent exactly how to execute a bounded slice of work. Without that execution layer, AI tends to fill in gaps with convenience-based assumptions, which usually leads to drift in scope, inconsistent verification, and weak traceability between requirements and code.

Implementation prompts solve that problem by turning planning intent into an operational contract. A strong implementation prompt defines the slice boundary, identifies the right agent roles, sequences the work, names the required artifacts, makes the acceptance criteria observable, and states how the result must be verified and demonstrated. That gives both human contributors and AI agents a concrete delivery plan instead of a vague request.

For Zeus Academia, this step was especially important because the repository had already accumulated architecture guidance, provenance rules, and domain models, but it still needed a disciplined way to convert those artifacts into full-stack slice delivery. The implementation prompts close that gap by binding planning, execution, and verification together in a format that can be reused across the backlog.

Revising the Implementation Plan to Include Full-Stack Slice Delivery

Before diving into the implementation prompts, I need to tweak some of the previous work. Microsoft Copilot inferred that the implementation plan and the slices were backend work only. This was not the intent and it led AI to create separate slices for the front-end and the back-end. I needed to update the guidance to implement the backend and the frontend together in the same slice. Look at commit 9fb04 for details on these changes.

From Here to Implementation

To begin implementation effectively, I first needed implementation prompts, which define exactly what the AI needs to accomplish to complete a slice, including prerequisites, tasks, validation steps, and delivery expectations. These prompts matter because they directly shape the implementation work, so they need to be precise, scoped, and unambiguous.

Before generating implementation prompts, I needed to define what those prompts should contain. That keeps the resulting implementation plans consistent and actionable. I also needed an execution plan to orchestrate slice delivery and a project overview instruction file to describe what we are building, which technologies we are using, and which standards the implementation needs to follow.

What follows are descriptions of the changes needed to get to the implementation prompts.

New Guidance

Like any other AI-generated artifact, I want the implementation prompts to follow a standard pattern and to be explicit about both intent and expectations.

project-overview.instructions.md

Submitting the create-project-overview.prompt.md prompt generates the project-overview.instructions.md instruction file containing repository-wide project overview instructions for zeus.academia that defines the application as a full-stack academic management web app and establishes shared context for AI-assisted work: it captures architecture, coding and testing standards across language, deployment and environment targets, key operational constraints, core implementation patterns, and a curated set of critical instruction files that govern development workflow, branching, custom agents, prompt practices, and provenance requirements.

implementation-prompt-generation.instructions.md

The implementation-prompt-generation.instructions.md file defines the standard for writing implementation prompts for the Academia vertical slices.

Implementation prompts are critical documents that tell the AI what to build and how to build it. To be effective, they need to be clear and unambiguous.

These instructions extend prompt-file-generation.instructions.md. Implementation prompts are a specific type of prompt, and the implementation-prompt instructions add requirements for showcasing outcomes and defining acceptance criteria.

Each implementation prompt orchestrates the implementation of its slice. It delegates work to other custom agents based on their specialties..

It specifies the preferred structure for implementation prompts, including objective, scope boundaries, agent plan, implementation steps, behavioral acceptance criteria, verification plan, showcase steps, output artifacts, and a validation checklist. It also makes the quality bar explicit by requiring observable and testable outcomes, human-executable demo steps, concrete verification commands, and disclosure of any missing agent dependencies, so the resulting prompts are concise, executable, and usable by both AI agents and human reviewers.

create-implementation-prompt-generation-instructions.prompt.md

The create-implementation-prompt-generation-instructions.prompt.md file generates the implementation-prompt-generation.instructions.md instruction file. I usually start with an ad hoc prompt to create the instruction file, and once the result is working, I convert that prompt into a checked-in prompt file so it can be versioned, traced, and reused.

implementation-prompt.instructions.md

implementation-prompt.instructions.md sets the repository standard for authoring vertical-slice implementation prompts: each prompt must cover one bounded slice, be grounded in existing repo evidence (instructions, agents, and prior prompts), define explicit multi-role agent ownership and handoffs (with escalation triggers), follow a fixed section order, provide numbered actionable steps with targets/owners/validation gates, include observable and testable acceptance criteria, separate implementation from verification with required evidence capture, and end with human-run showcase steps proving business value; it also prescribes role preferences (for example using report-projection for reporting-heavy work and data-persistence for schema-heavy work), includes a reusable template plus anti-patterns/checklists, and requires ongoing alignment of prompts with shared agent profiles and project-overview references.

create-implementation-prompt-instructions.prompt.md

create-implementation-prompt-instructions is a meta-prompt that instructs an AI to generate a concise, evidence-grounded implementation-instructions file for slice delivery, requiring strict context review of existing project standards, explicit single-slice scope, role-specialized agent orchestration (including named reusable agents and fallbacks), fixed prompt section ordering, concrete numbered implementation steps with file-level targets and handoffs, observable acceptance criteria, separated verification and showcase workflows, reusable template and anti-pattern coverage, and a final validation checklist; it also mandates provenance-complete metadata, cross-reference updates to project overview, and success criteria centered on executable slice plans that humans and agents can both verify and demo.

create-project-overview.prompt.md

Before I could generate slice-level implementation prompts, I needed a repository-wide project overview instruction file that captured the shared architectural and technology context. I used this prompt to create that instruction file in a reusable, provenance-friendly form:

Create a prompt to create a Project Overview instruction file containing the high-level context for the project.

New Artifacts

In order to produce the implementation prompts we need to provide clear guidance coordinating the implementation of each slice and there are the implementation prompts that we've been driving toward all this time.

academia-execution-plan.md

The project overview and the implementation plan are used to produce an execution plan.

Create a prompt file that generates an execution plan from the #file:project-overview.instructions.md and the #file:academia-implementation-plan.md

The academia-execution-plan is a dependency-driven delivery blueprint for Zeus Academia that sequences the full vertical-slice backlog from Shared Kernel foundations through reference data, registration, core mutations/queries, lifecycle closure, and finally report/projection slices, with explicit phase objectives, blockers, per-slice backlog items, and strict quality governance tying progress to business-rule invariants.

The execution plan differs from the implementation plan in that the implementation plan focuses on delivering features logically whereas the execution plan is about technical implementation.

Academia Implementation Prompts

The following prompt generates implementation prompts for all of the slices in the implementation plan.

Create an implementation prompt for each slice in the #file:academia-implementation-plan.md

The next step was to generate a concrete implementation prompt for each slice in the plan so the backlog could move from architectural intent to execution-ready work items.

# Slice File Functional Requirements Non-Functional Requirements Dependencies
EP-0-1 Shared Kernel ep-0-1-shared-kernel-implementation.prompt.md Domain primitives (Academic, Rank, AccessLevel, Degree, University, Extension, AcademicQualification); XOR employment invariant (tenured OR contracted, never both); AccessLevel derived only from Rank; empNr uniqueness; extension uniqueness; Result<T>/Error types; domain event contracts Nullable-enabled C#; aggregate guard methods enforce invariants; persistence rules must not contradict aggregate rules; no feature code in this slice None
EP-1-1 ManageRanks ep-1-1-manage-ranks-implementation.prompt.md Accept only P, SL, L rank codes; reject duplicate codes; list ranks with stable codes and access-level mapping Single canonical source for rank data; no second rank source of truth; downstream slices rely on one approved set EP-0-1
EP-1-2 ManageDegrees ep-1-2-manage-degrees-implementation.prompt.md Add degree with unique code; reject duplicate codes; list degrees with stable contracts for registration lookups Single canonical degree catalog; deterministic list result EP-0-1
EP-1-3 ManageUniversities ep-1-3-manage-universities-implementation.prompt.md Add university with unique code; reject duplicates; list universities with stable reference data Single canonical university catalog; deterministic list result EP-0-1
EP-1-4 ProvisionExtension ep-1-4-provision-extension-implementation.prompt.md Provision extension (numeric format only, unique); reject duplicate extNr; deprovision only unassigned extensions; reject deprovisioning of assigned extensions Extension uniqueness preserved for all downstream assignment slices; not disposable seed data EP-0-1
EP-2-1 RegisterAcademic ep-2-1-register-academic-implementation.prompt.md Create academic with valid empNr (unique, length-validated), EmpName (≤15 chars), valid rank, ≥1 qualification (valid degree+university), 1 available extension; derive AccessLevel from rank; reject duplicate empNr, invalid rank, missing qualification, unavailable extension Atomic persistence — no partial writes; integration-first test strategy; hard dependency gate — no dependent slices until this passes integration tests EP-1-1, EP-1-2, EP-1-3, EP-1-4
EP-3-1 ViewAcademicProfile ep-3-1-view-academic-profile-implementation.prompt.md Return empNr, name, rank, derived access level, qualifications, extension, and employment state; not-found returns standard missing-resource response; AccessLevel in response matches current rank-derived rule Read-only projection; no command-side mutation logic; stable response DTOs EP-2-1
EP-3-2 UpdateAcademicName ep-3-2-update-academic-name-implementation.prompt.md Update name for existing academic; reject names >15 chars; not-found fails cleanly; updated name visible in read models Name-length rule must stay aligned with registration; no cross-slice side effects EP-2-1
EP-3-3 SearchListAcademics ep-3-3-search-list-academics-implementation.prompt.md Filter by name, rank, access level, employment status, degree, university; deterministic pagination and sorting; empty result returns valid empty page (not error) Read-optimized; deterministic sort across repeated calls; filter contracts must not diverge from profile/report fields EP-2-1
EP-3-4 GrantTenure ep-3-4-grant-tenure-implementation.prompt.md Set academic to tenured state; clear any existing contract end date; preserve employment XOR rule; missing academic fails cleanly Reuse aggregate guard — do not re-encode XOR logic in handler only EP-2-1
EP-3-5 AssignContract ep-3-5-assign-contract-implementation.prompt.md Assign contract with future end date only; reject current or past dates; clear tenured state (XOR); profile/list reflects contracted state Future-date rule must stay aligned with RenewContract semantics EP-2-1
EP-3-6 RemoveEmploymentStatus ep-3-6-remove-employment-status-implementation.prompt.md Clear both IsTenured and ContractEndDate from either employment state; missing academic fails cleanly; read models show cleared state No stale contract dates or contradictory read-model values after clearing EP-2-1
EP-3-7 ChangeRank ep-3-7-change-rank-implementation.prompt.md Accept only valid rank codes from ManageRanks; automatically recalculate AccessLevel (P→INT, SL→NAT, L→LOC); reject invalid rank or missing academic; updated rank and access level immediately visible in read models AccessLevel derivation must remain centralized in aggregate — not duplicated in handler EP-2-1, EP-1-1
EP-3-8 RecordDegreeObtained ep-3-8-record-degree-obtained-implementation.prompt.md Add qualification (valid degree + valid university) to existing academic; reject invalid degree or university references; reject duplicate Academic+Degree pair (even with different university); qualification visible in reads Duplicate Academic+Degree rule enforced consistently in code and persistence EP-2-1, EP-1-2, EP-1-3
EP-3-9 AssignExtension ep-3-9-assign-extension-implementation.prompt.md Assign provisioned, unassigned extension to academic (1:1 uniqueness); reject unprovisioned or already-assigned extensions; current assignment queryable Concurrency-sensitive uniqueness protected at both handler and DB constraint levels EP-2-1, EP-1-4
EP-4-1 RenewContract ep-4-1-renew-contract-implementation.prompt.md Renew only currently contracted academics; new end date must be in the future; invalid renewal leaves prior state unchanged; read models reflect updated end date Same future-date semantics as AssignContract; renewal must fail for non-contracted academics EP-3-5
EP-4-2 ConvertContractToTenure ep-4-2-convert-contract-to-tenure-implementation.prompt.md Convert only from contracted state; clear ContractEndDate on success; leave academic in tenured state only; read models reflect tenured state; non-contracted academic fails Must be distinguishable from direct tenure grant; XOR rule preserved EP-3-5
EP-4-3 UpdateDegreeUniversity ep-4-3-update-degree-university-implementation.prompt.md Update university on existing qualification record; reject missing qualification target; reject invalid university reference; no duplicate qualification created; qualification reads reflect updated university Preserve one-university-per-academic-degree rule; qualification must be uniquely addressable EP-3-8
EP-4-4 RemoveDegreeRecord ep-4-4-remove-degree-record-implementation.prompt.md Remove a non-final qualification; reject removal of the last remaining qualification; missing qualification fails cleanly; remaining qualifications stay consistent Minimum-one-qualification invariant enforced at aggregate level EP-3-8
EP-4-5 ListQualifications ep-4-5-list-qualifications-implementation.prompt.md List qualifications by academic, by degree code, and by university code; empty results return clean empty (not error); stable contracts across all three query modes Read-only, read-optimized; deterministic results; three query modes share consistent response shape EP-3-8
EP-4-6 ReassignExtension ep-4-6-reassign-extension-implementation.prompt.md Atomically move academic from one extension to another; reject unavailable target; failed reassignment leaves original assignment intact Atomic transaction — source release and target assignment in one flow; 1:1 uniqueness maintained through success and failure EP-3-9
EP-4-7 ReleaseExtension ep-4-7-release-extension-implementation.prompt.md Release current extension and clear academic-side reference; released extension returns to available pool; invalid release (no current extension) fails cleanly Both academic state and extension availability updated consistently in one operation EP-3-9
EP-4-8 ListAvailableExtensions ep-4-8-list-available-extensions-implementation.prompt.md Return only provisioned, unassigned extensions; exclude assigned; include released; empty result returns clean empty response Results must reflect latest assignment lifecycle transitions accurately EP-3-9
EP-5-1 DeregisterAcademic ep-5-1-deregister-academic-implementation.prompt.md Deregister existing academic only; release any assigned extension as part of the flow; retain required qualification history; emit deregistration domain event for downstream consumers No orphaned extensions; history retention must not conflict with persistence behavior; downstream report consumers must have required event data EP-2-1, EP-4-7
EP-6-1 AcademicDirectory ep-6-1-academic-directory-implementation.prompt.md List active academics with name, rank, access level, extension, and employment status; matches current lifecycle state after mutations; deterministic paging and sorting Read-optimized projections — not command-side aggregate loading; performance meets plan expectations on seeded data EP-2-1 (+ lifecycle slices)
EP-6-2 ByRankReport ep-6-2-by-rank-report-implementation.prompt.md Group academics by rank with counts and listings; include derived access-level context; grouped totals accurate after rank changes Read-optimized; grouped counts must not drift after source data changes EP-2-1, EP-3-7
EP-6-3 ByAccessLevelReport ep-6-3-by-access-level-report-implementation.prompt.md Group academics by INT, NAT, LOC with counts and listings; group membership changes when rank changes; no direct access-level mutation path introduced Must consume derived access level — not a manually stored field; P→INT, SL→NAT, L→LOC mapping verified in tests EP-3-7
EP-6-4 TenuredAcademicsReport ep-6-4-tenured-academics-report-implementation.prompt.md List only tenured academics with rank and qualification summary; contract-converted academics appear correctly; employment-cleared academics excluded Consistent employment-state filtering after multiple transitions (direct grant, conversion, clearing) EP-3-4
EP-6-5 ContractedAcademicsReport ep-6-5-contracted-academics-report-implementation.prompt.md List only currently contracted academics sorted by contract end date ascending; renewed contracts show updated date; non-contracted excluded Deterministic ascending sort on end date; stable after renewal EP-3-5
EP-6-6 ExpiringContractsReport ep-6-6-expiring-contracts-report-implementation.prompt.md Filter contracts expiring within configurable window (default 90 days); contracts inside window appear; outside do not; boundary dates handled consistently; supports custom threshold Deterministic date-window behavior; default threshold configurable; boundary cases must be explicitly tested EP-3-5
EP-6-7 QualificationReports ep-6-7-qualification-reports-implementation.prompt.md Grouped report by degree with counts and listings; grouped report by university with counts and listings; counts accurate after add, update, and remove qualification flows Both grouped outputs synchronized with source qualification data; distinct from the operational ListQualifications slice EP-3-8
EP-6-8 AccessLevelDistributionReport ep-6-8-access-level-distribution-report-implementation.prompt.md Distribution totals per INT/NAT/LOC for active academics only; totals update after rank changes; deregistered academics excluded from totals Active-only filtering; compact analytical output (counts-only or counts-plus-details TBD by coordinator); no direct access-level mutation path EP-3-7

In theory, and hopefully in practice, submitting these prompts will result in an application that meets our requirements, going all the way back to Part 1.

ep-1-1-manage-ranks-implementation.prompt.md

Here is a closer look at one of the implementation prompts. ep-1-1-manage-ranks-implementation.prompt.md is a slice-scoped implementation prompt for the Phase 1 ManageRanks reference-data capability, directing a coordinated workflow (slice-coordinator, backend-domain, testing-verification) to establish one canonical rank source, implement validated add/list CQRS behavior and endpoints, enforce strict allowed rank codes (P, SL, L) with duplicate prevention, and produce verification evidence through validator/handler/integration tests, while explicitly constraining scope away from unrelated academic/employment/reporting work and requiring a human showcase that proves downstream slices can reliably consume stable rank/access-level reference data rather than hardcoding it.

New Agents

The last preparation step was to build the agents that would implement the solution. The implementation prompts hand off work to the appropriate agents so each slice can be executed with explicit role boundaries.

backend-slice-implementer.agent.md

The backend-slice-implementer agent is specialized for implementing backend vertical slices in the Zeus Academia system using ASP.NET Core, MediatR, EF Core, FluentValidation, and xUnit, with a strict, evidence-based workflow that starts by reading slice and repo instructions, then implementing only the required backend components, running focused verification, and reporting results in a fixed structure.

slice-verifier.agent.md

The slice-verifier agent acts as a strict, evidence-first QA owner for individual vertical slices: it verifies implementation against the slice prompt and acceptance criteria, checks changed files and focused tests, runs any missing safe verification commands, and produces a pass/fail assessment.

data-integration-doc.agent.md

The data-integration-doc agent defines a support-focused Zeus Academia agent that handles slice-adjacent work such as migrations, integration touchpoints, documentation, rollout/showcase notes, and traceability, with a process centered on confirming support scope, identifying impacted artifacts, making only minimal enabling changes, capturing side effects, and handing off evidence plus residual risks to coordination and verification roles.

data-persistence.agent.md

The data-persistence agent defines a Zeus Academia persistence-focused implementation agent responsible for making minimal, high-integrity EF Core changes that support slice-level domain rules, with a workflow that starts by validating slice rules and current persistence context, then applies targeted mappings/constraints/indexes/migrations, verifies database behavior aligns with aggregate and validator invariants, and hands off assumptions and risks to coordination/testing roles.

backend-domain.agent.md

The backend-domain agent defines a Zeus Academia backend/domain implementation persona that owns slice-scoped ASP.NET Core CQRS work across commands, queries, validators, handlers, endpoints, and required persistence updates, with a strict workflow of reviewing prompt and standards, confirming target feature/contracts/domain rules, implementing in dependency order, validating behavior, and handing off API contracts and edge cases to coordinator/frontend/testing/doc roles.

frontend-workflow.agent.md

The frontend-workflow agent defines a Zeus Academia frontend implementation persona responsible for slice-scoped Vue 3 workflows with strict TypeScript typing and Pinia state patterns, following a process of reviewing slice/API context, confirming flow and state ownership, implementing minimal UI/store/composable changes, validating loading/success/empty/failure behavior against backend contracts, and handing off notes to verification.

report-projection.agent.md

The report-projection agent defines a specialized Zeus Academia agent for report and projection work, focused on building read models, grouped/analytical queries, projection-backed endpoints, and report DTO contracts while keeping outputs aligned with canonical source-of-truth domain rules; it prescribes a minimal-change workflow (validate reporting dependencies and semantics, implement targeted query-side changes, verify grouped/projection accuracy after lifecycle state changes, and hand off).

slice-coordinator.agent.md

The slice-coordinator agent defines a coordination-focused Zeus Academia persona that manages vertical-slice delivery by confirming scope and prerequisites, identifying required repo context, sequencing work with explicit role handoffs, escalating blockers or pattern conflicts early, and finishing with verification gates plus unresolved risks.

testing-verification.agent.md

The testing-verification agent defines a Zeus Academia verification-focused persona that treats evidence as the gate for slice completion: it reviews acceptance criteria and changed surfaces, derives minimal high-value checks, executes or specifies backend/frontend/data/contract validation, captures pass/fail proof and unresolved gaps, and returns a verdict based on observed outcomes rather than implementation intent; it emphasizes advanced strengths in criteria analysis, integration and failure-mode testing, strict escalation when criteria or prerequisites are missing, and hard boundaries against masking flaky or incomplete verification, signing off with partial evidence, or changing broad app behavior just to make tests pass.

What's Next?

At this point, the repository has enough structure to move from planning into disciplined implementation. The requirements, architecture guidance, project overview, execution plan, implementation prompts, and agent roles now form a connected delivery system rather than a loose collection of artifacts. In the next post, I'll begin implementing the earliest slices in dependency order so we can see whether this workflow holds up under real coding work.

If you're interested in the files, you can find them in the Academia GitHub repository. If you'd like to follow along with your own implementation, fork the repository and use the fork to build your own version.

Feedback Loop

Feedback is always welcome. Send your thoughts to john.miller@codemag.com.

Disclaimer

AI contributed to the writing of this post, but humans reviewed it, refined it, enhanced it, and gave it soul.

Prompts:

  • Examine the changes made on the Part-Seven branch and describe in prose targeted for human consumption, the intent of the change, the justification for the change, and the implementation.
  • Summarize this file in one paragraph.
  • List all of the slices in a Markdown table. Include a link to the file on GitHub. Also include the slice number, the functional and non-functional requirements, and the slice numbers this slice depends on.