Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Unreleased

- Renomeada a ferramenta para PRD as a Code, com pacote `@marcialwushu/prd-as-code` e executável `prd`.
- Renomeada a ferramenta para PRD as a Code, com pacote `@devcomputaria/prd-as-code` e executável `prd`.

## 0.2.0-alpha.1

Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2026 prodshape contributors
Copyright (c) 2026 DevComputaria

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# PRD as a Code

[![CI](https://github.com/DevComputaria/prd-as-code/actions/workflows/ci.yml/badge.svg)](https://github.com/DevComputaria/prd-as-code/actions/workflows/ci.yml)

**Product Requirements Document as Code em YAML, Markdown e Gherkin.** Framework TypeScript e CLI `prd` para vocabulário, regras, requisitos, decisões, processos e evidências versionadas.

Versão **0.2.0-alpha.1**. Um monólito modular, distribuído como um pacote npm. Este projeto evolui o protótipo independente criado nesta conversa; não é o ProductShape original e não declara compatibilidade com seu formato.
> Status: **alpha** · CLI local · pacote npm **ainda não publicado** (`@devcomputaria/prd-as-code`).

Versão **0.2.0-alpha.1**. Um monólito modular, distribuído como um pacote npm. Este projeto evolui um protótipo independente anterior; não é o ProductShape original e não declara compatibilidade com seu formato.

## Começar

Expand Down Expand Up @@ -43,7 +47,7 @@ projeto de desenvolvimento.
Sem instalação global, execute `node dist/interfaces/cli/main.js` a partir deste repositório. O pacote não foi publicado no npm. Para instalar em outro projeto, use o arquivo `.tgz` fornecido ou gere um com `npm pack`; instale esse arquivo como dependência de desenvolvimento e versione o lockfile.

```sh
npm install --save-dev /caminho/marcialwushu-prd-as-code-0.2.0-alpha.1.tgz
npm install --save-dev /caminho/devcomputaria-prd-as-code-0.2.0-alpha.1.tgz
npm exec --no -- prd validate --strict
```

Expand Down
2 changes: 1 addition & 1 deletion docs/MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ prd -C ../produto-antigo validate
prd -C ../produto-antigo legacy citations check
```

A migração reconhece apenas o formato do protótipo independente v0 desta conversa. Não reconhece ProductShape oficial.
A migração reconhece apenas o formato do protótipo independente v0 deste repositório. Não reconhece ProductShape oficial.

Cria intent.config.yaml e intent-product/; preserva prodshape.json, product/, .prodshape/ e documentos com citações antigas. Os IDs são mantidos e os digests antigos são registrados no mapa `.intent/migrations/prodshape-v0.json`. Algoritmos diferentes não produzem necessariamente o mesmo digest.

Expand Down
2 changes: 1 addition & 1 deletion docs/STRUCTURE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Estrutura refatorada

Nome: PRD as a Code. Executável: `prd`. Pacote único: `@marcialwushu/prd-as-code`.
Nome: PRD as a Code. Executável: `prd`. Pacote único: `@devcomputaria/prd-as-code`.

## Mapa rápido

Expand Down
2 changes: 1 addition & 1 deletion docs/USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ O lock e estados transitórios indicados no `.gitignore` não devem ser commitad
Todo YAML começa com o envelope comum. Este é um requisito mínimo válido:

```yaml
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Requirement
metadata:
id: REQ-TRANSFER-001
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"artifact":{"apiVersion":"intent.gitreverse/v1alpha1","kind":"Requirement","links":[{"relation":"governed-by","target":"BR-001"},{"relation":"realized-by","target":"PROC-001#avaliar"}],"metadata":{"id":"REQ-001","status":"active","title":"Avaliar conta e saldo"},"spec":{"acceptance":["Conta inativa resulta em CONTA_INATIVA.","Conta ativa sem saldo suficiente resulta em SALDO_INSUFICIENTE.","Conta ativa com saldo suficiente resulta em ELEGIVEL."],"attributes":{"priority":"high"},"category":"functional","profile":"reqif-core/v1","statement":"Neste exemplo didático, a transferência é elegível quando a conta está ativa e possui saldo suficiente."}},"body":"","canonicalization":"intent/v1"}
{"artifact":{"apiVersion":"prd.devcomputaria/v1alpha1","kind":"Requirement","links":[{"relation":"governed-by","target":"BR-001"},{"relation":"realized-by","target":"PROC-001#avaliar"}],"metadata":{"id":"REQ-001","status":"active","title":"Avaliar conta e saldo"},"spec":{"acceptance":["Conta inativa resulta em CONTA_INATIVA.","Conta ativa sem saldo suficiente resulta em SALDO_INSUFICIENTE.","Conta ativa com saldo suficiente resulta em ELEGIVEL."],"attributes":{"priority":"high"},"category":"functional","profile":"reqif-core/v1","statement":"Neste exemplo didático, a transferência é elegível quando a conta está ativa e possui saldo suficiente."}},"body":"","canonicalization":"intent/v1"}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"artifact":{"apiVersion":"intent.gitreverse/v1alpha1","kind":"BusinessRule","metadata":{"id":"BR-001","status":"active","title":"Conta de origem ativa"},"spec":{"formulation":{"assertion":{"implies":{"if":{"bindings":{"transfer":"t"},"factRef":"FACT-001"},"then":{"bindings":{"transfer":"t"},"factRef":"FACT-002"}}},"forEach":{"conceptRef":"TERM-001","variable":"t"},"modality":"obligation"},"profile":"sbvr-core/v1","statement":"Toda transferência elegível deve ter conta de origem ativa."}},"body":"","canonicalization":"intent/v1"}
{"artifact":{"apiVersion":"prd.devcomputaria/v1alpha1","kind":"BusinessRule","metadata":{"id":"BR-001","status":"active","title":"Conta de origem ativa"},"spec":{"formulation":{"assertion":{"implies":{"if":{"bindings":{"transfer":"t"},"factRef":"FACT-001"},"then":{"bindings":{"transfer":"t"},"factRef":"FACT-002"}}},"forEach":{"conceptRef":"TERM-001","variable":"t"},"modality":"obligation"},"profile":"sbvr-core/v1","statement":"Toda transferência elegível deve ter conta de origem ativa."}},"body":"","canonicalization":"intent/v1"}
2 changes: 1 addition & 1 deletion examples/transfer/framework/capabilities.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": "0.2.0-alpha.1",
"language": "intent.gitreverse/v1alpha1",
"language": "prd.devcomputaria/v1alpha1",
"xml": false,
"profiles": {
"product-core/v1": {
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/language.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Os schemas publicados aqui são contratos próprios, inspirados nos metamodelos
## Envelope

```yaml
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Requirement
metadata:
id: REQ-001
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Actor.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Actor"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Behavior.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Behavior"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "BoundedContext"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "BusinessRule"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Decision.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Decision"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Evidence.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Evidence"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/FactType.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "FactType"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Journey.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Journey"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "OpenQuestion"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Process.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Process"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Requirement"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/Term.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Term"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/UseCase.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "UseCase"
Expand Down
28 changes: 14 additions & 14 deletions examples/transfer/framework/schemas/artifact.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://gitreverse.dev/schemas/intent/v1alpha1/artifact",
"$id": "https://prd.devcomputaria/schemas/artifact",
"$defs": {
"expression": {
"oneOf": [
Expand Down Expand Up @@ -102,7 +102,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Actor"
Expand Down Expand Up @@ -196,7 +196,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Journey"
Expand Down Expand Up @@ -290,7 +290,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "UseCase"
Expand Down Expand Up @@ -384,7 +384,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "BoundedContext"
Expand Down Expand Up @@ -478,7 +478,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Term"
Expand Down Expand Up @@ -580,7 +580,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "FactType"
Expand Down Expand Up @@ -697,7 +697,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "BusinessRule"
Expand Down Expand Up @@ -831,7 +831,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Requirement"
Expand Down Expand Up @@ -978,7 +978,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Decision"
Expand Down Expand Up @@ -1221,7 +1221,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Process"
Expand Down Expand Up @@ -1389,7 +1389,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Behavior"
Expand Down Expand Up @@ -1505,7 +1505,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "Evidence"
Expand Down Expand Up @@ -1631,7 +1631,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"kind": {
"const": "OpenQuestion"
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/framework/schemas/config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "object",
"properties": {
"apiVersion": {
"const": "intent.gitreverse/v1alpha1"
"const": "prd.devcomputaria/v1alpha1"
},
"name": {
"type": "string",
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/intent.config.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
name: Transfer
language: pt
product: product
Expand Down
4 changes: 2 additions & 2 deletions examples/transfer/notes/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- intent:cite {"version":1,"id":"BR-001","digest":"sha256:d6c280ed2a9dd38426ec527fc8a5877bbcd419caeb0cbc35df71a02c41f51e41"} -->
> {
> "artifact": {
> "apiVersion": "intent.gitreverse/v1alpha1",
> "apiVersion": "prd.devcomputaria/v1alpha1",
> "kind": "BusinessRule",
> "metadata": {
> "id": "BR-001",
Expand Down Expand Up @@ -46,7 +46,7 @@
<!-- intent:cite {"version":1,"id":"REQ-001","digest":"sha256:804ce961a3274c0ba80055752b46fc8a66475f610235ef76ad002a75fec5e572"} -->
> {
> "artifact": {
> "apiVersion": "intent.gitreverse/v1alpha1",
> "apiVersion": "prd.devcomputaria/v1alpha1",
> "kind": "Requirement",
> "links": [
> {
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/product/actors/ACT-001.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Actor
metadata:
id: ACT-001
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/product/decisions/DEC-001.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Decision
metadata:
id: DEC-001
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/product/journeys/JRN-001.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Journey
metadata:
id: JRN-001
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/product/processes/PROC-001.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Process
metadata:
id: PROC-001
Expand Down
2 changes: 1 addition & 1 deletion examples/transfer/product/requirements/REQ-001.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: intent.gitreverse/v1alpha1
apiVersion: prd.devcomputaria/v1alpha1
kind: Requirement
metadata:
id: REQ-001
Expand Down
Loading
Loading