abapgit-agent 1.12.1 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,138 +49,49 @@ See [Creating New ABAP Projects](INSTALL.md#creating-new-abap-projects) to set u
49
49
 
50
50
  ## CLI Commands
51
51
 
52
- ### Setup Commands
52
+ ### Setup
53
53
 
54
54
  ```bash
55
- # Initialize local configuration for existing git repo
56
- abapgit-agent init --package ZMY_PACKAGE
57
-
58
- # With custom folder (default: /src/)
59
- abapgit-agent init --package ZMY_PACKAGE --folder /abap/
60
-
61
- # With custom folder logic (default: PREFIX)
62
- abapgit-agent init --package ZMY_PACKAGE --folder-logic FULL
63
-
64
- # Create online repository in ABAP
65
- abapgit-agent create
66
-
67
- # Delete online repository from ABAP (keeps local files)
68
- abapgit-agent delete
69
-
70
- # Import objects from ABAP package to git
71
- abapgit-agent import
72
- ```
73
-
74
- ### Development Commands
75
-
76
- ```bash
77
- # Pull and activate (auto-detects git remote and branch)
78
- abapgit-agent pull
79
-
80
- # Pull with specific branch
81
- abapgit-agent pull --branch develop
82
-
83
- # Pull specific files only (fast iteration)
84
- abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zif_my_intf.intf.abap
85
-
86
- # Override git URL if needed
87
- abapgit-agent pull --url https://github.com/user/repo --branch main
88
-
89
- # Pull with a specific transport request
90
- abapgit-agent pull --transport DEVK900001
91
-
92
- # Import objects from ABAP package to git
93
- abapgit-agent import
94
-
95
- # Import with custom commit message
96
- abapgit-agent import --message "feat: add new feature"
55
+ abapgit-agent init --package ZMY_PACKAGE # Initialize local config
56
+ abapgit-agent create # Create online repo in ABAP
57
+ abapgit-agent import # Import objects from ABAP to git
58
+ abapgit-agent delete # Delete repo from ABAP
97
59
  ```
98
60
 
99
- ### Validation Commands
61
+ ### Development
100
62
 
101
63
  ```bash
102
- # Check syntax of local source files BEFORE commit (fast, no activation)
103
- # Supported: CLAS, INTF, PROG, DDLS (CDS Views)
104
- abapgit-agent syntax --files src/zcl_my_class.clas.abap
105
- abapgit-agent syntax --files src/zc_my_view.ddls.asddls
106
-
107
- # Syntax check with ABAP Cloud mode
108
- abapgit-agent syntax --files src/zcl_my_class.clas.abap --cloud
109
-
110
- # Syntax check multiple files
111
- abapgit-agent syntax --files src/zcl_class.clas.abap,src/zc_view.ddls.asddls
112
-
113
- # Inspect source file for issues (after activation)
114
- abapgit-agent inspect --files src/zcl_my_class.clas.abap
115
-
116
- # Run AUnit tests for test classes
117
- abapgit-agent unit --files src/zcl_my_test.clas.testclasses.abap
118
-
119
- # Run tests for multiple test classes
120
- abapgit-agent unit --files src/zcl_test1.clas.testclasses.abap,src/zcl_test2.clas.testclasses.abap
64
+ abapgit-agent pull # Pull and activate
65
+ abapgit-agent pull --files src/zcl_my_class.clas.abap # Pull specific files
66
+ abapgit-agent syntax --files src/zcl_my_class.clas.abap # Check syntax before commit
67
+ abapgit-agent inspect --files src/zcl_my_class.clas.abap # Code Inspector after pull
68
+ abapgit-agent unit --files src/zcl_my_test.clas.testclasses.abap # Run AUnit tests
69
+ abapgit-agent run --class ZCL_MY_RUNNER # Execute class headlessly
121
70
  ```
122
71
 
123
- ### Explore Commands
72
+ ### Explore
124
73
 
125
74
  ```bash
126
- # Display package hierarchy tree
127
- abapgit-agent tree --package '$MY_PACKAGE'
128
-
129
- # View object definitions from ABAP system (classes, interfaces, tables, data elements)
130
- abapgit-agent view --objects ZCL_MY_CLASS
131
- abapgit-agent view --objects SFLIGHT --type TABL
132
- abapgit-agent view --objects S_CARR_ID --type DTEL
133
-
134
- # Preview table or CDS view data
135
- abapgit-agent preview --objects SFLIGHT
136
- abapgit-agent preview --objects ZC_MY_CDS_VIEW --type DDLS
137
- abapgit-agent preview --objects SFLIGHT --limit 20
138
- abapgit-agent preview --objects SFLIGHT --where "CARRID = 'AA'"
139
- abapgit-agent preview --objects SFLIGHT --columns CARRID,CONNID,PRICE
140
- abapgit-agent preview --objects SFLIGHT --vertical
141
- abapgit-agent preview --objects SFLIGHT --compact
142
-
143
- # Find where-used (objects using a specific object)
144
- abapgit-agent where --objects ZCL_MY_CLASS
145
- abapgit-agent where --objects ZIF_MY_INTERFACE
146
- abapgit-agent where --objects ZCL_MY_CLASS --type CLAS
147
-
148
- # Query short dumps (ST22)
149
- abapgit-agent dump --date TODAY
150
- abapgit-agent dump --user DEVELOPER --date TODAY --detail 1
75
+ abapgit-agent tree --package '$MY_PACKAGE' # Package hierarchy
76
+ abapgit-agent list --package '$MY_PACKAGE' # List objects
77
+ abapgit-agent view --objects ZCL_MY_CLASS # View object definition
78
+ abapgit-agent preview --objects SFLIGHT # Preview table data
79
+ abapgit-agent where --objects ZCL_MY_CLASS # Where-used list
80
+ abapgit-agent dump --date TODAY # Query short dumps (ST22)
81
+ abapgit-agent debug set --files abap/zcl_my_class.clas.abap:42 # Set breakpoint
151
82
  ```
152
83
 
153
- ### Debug Commands
84
+ ### Utility
154
85
 
155
86
  ```bash
156
- # Set a breakpoint
157
- abapgit-agent debug set --files abap/zcl_my_class.clas.abap:42
158
-
159
- # Attach and debug interactively (human REPL)
160
- abapgit-agent debug attach
161
-
162
- # Attach in scripted AI mode — emits JSON on hit, starts background daemon
163
- abapgit-agent debug attach --json
164
-
165
- # Step, inspect variables, call stack (no --session needed)
166
- abapgit-agent debug step --type over --json
167
- abapgit-agent debug vars --json
168
- abapgit-agent debug stack --json
169
-
170
- # Always release the frozen work process when done
171
- abapgit-agent debug step --type continue --json
172
- ```
173
-
174
- ### Utility Commands
175
-
176
- ```bash
177
- # Health check
178
- abapgit-agent health
179
-
180
- # Check integration status
181
- abapgit-agent status
87
+ abapgit-agent guide # Read full ABAP development guide
88
+ abapgit-agent ref "CORRESPONDING" # Search ABAP reference
89
+ abapgit-agent ref --topic sql # Browse by topic
90
+ abapgit-agent transport list # List transport requests
91
+ abapgit-agent upgrade # Upgrade CLI and ABAP backend
92
+ abapgit-agent status # Check configuration
93
+ abapgit-agent health # Verify ABAP connection
182
94
  ```
183
- Note: All ABAP commands automatically check CLI/ABAP API version compatibility.
184
95
 
185
96
  ## Local Development
186
97
 
@@ -200,25 +111,11 @@ npm run pull -- --url <git-url> --branch main
200
111
 
201
112
  | Topic | File |
202
113
  |-------|------|
114
+ | Full Documentation | [https://sylvoscai.github.io/abapgit-agent/](https://sylvoscai.github.io/abapgit-agent/) |
203
115
  | Installation & Setup | [INSTALL.md](INSTALL.md) |
204
- | init Command | [docs/init-command.md](docs/init-command.md) |
205
- | create Command | [docs/create-command.md](docs/create-command.md) |
206
- | delete Command | [docs/delete-command.md](docs/delete-command.md) |
207
- | import Command | [docs/import-command.md](docs/import-command.md) |
208
- | pull Command | [docs/pull-command.md](docs/pull-command.md) |
209
- | syntax Command | [docs/syntax-command.md](docs/syntax-command.md) |
210
- | inspect Command | [docs/inspect-command.md](docs/inspect-command.md) |
211
- | unit Command | [docs/unit-command.md](docs/unit-command.md) |
212
- | tree Command | [docs/tree-command.md](docs/tree-command.md) |
213
- | view Command | [docs/view-command.md](docs/view-command.md) |
214
- | preview Command | [docs/preview-command.md](docs/preview-command.md) |
215
- | where Command | [docs/where-command.md](docs/where-command.md) |
216
- | dump Command | [docs/dump-command.md](docs/dump-command.md) |
217
- | debug Command | [docs/debug-command.md](docs/debug-command.md) |
218
- | ref Command | [docs/ref-command.md](docs/ref-command.md) |
116
+ | All Commands Overview | [docs/commands.md](docs/commands.md) |
219
117
  | REST API Reference | [API.md](API.md) |
220
118
  | Error Handling | [ERROR_HANDLING.md](ERROR_HANDLING.md) |
221
- | ABAP Coding Guidelines | [abap/CLAUDE.md](abap/CLAUDE.md) |
222
119
 
223
120
  ## Dependent Projects
224
121
 
@@ -0,0 +1,114 @@
1
+ # ABAP Development with abapGit
2
+
3
+ You are working on an ABAP project using abapGit for version control.
4
+
5
+ > **Full guide:** https://sylvoscai.github.io/abapgit-agent/pages/abap-coding-guidelines.html
6
+ > **Agent mode:** Run `abapgit-agent guide` for the complete guide with all rules.
7
+
8
+ ---
9
+
10
+ ## Critical Rules
11
+
12
+ ### 1. Use `ref` Command for Unfamiliar Topics
13
+
14
+ **When starting to work on ANY unfamiliar ABAP topic, syntax, or pattern, use the `ref` command BEFORE writing any code.**
15
+
16
+ ```bash
17
+ abapgit-agent ref "CORRESPONDING" # search by pattern
18
+ abapgit-agent ref --topic exceptions # browse by topic
19
+ abapgit-agent ref --topic debug-session # read full guideline file
20
+ abapgit-agent ref --topic workflow-detailed
21
+ ```
22
+
23
+ ### 2. Read `.abapGitAgent` for Folder Location and Naming Conventions
24
+
25
+ **Before creating ANY ABAP object file, read `.abapGitAgent` to determine the correct folder.**
26
+
27
+ The folder is configured in `.abapGitAgent` (property: `folder`):
28
+ - If `folder` is `/src/` → files go in `src/` (e.g., `src/zcl_my_class.clas.abap`)
29
+ - If `folder` is `/abap/` → files go in `abap/` (e.g., `abap/zcl_my_class.clas.abap`)
30
+
31
+ **Check naming conventions before creating any new object:**
32
+ 1. `guidelines/objects.local.md` ← project-specific overrides (if file exists)
33
+ 2. `abapgit-agent ref --topic objects` ← default Z/Y prefix conventions
34
+
35
+ ### 3. Create XML Metadata / Local Classes
36
+
37
+ Each ABAP object needs an XML metadata file. Local helper/test-double classes use separate `.locals_def.abap` / `.locals_imp.abap` files.
38
+
39
+ ```bash
40
+ abapgit-agent ref --topic object-creation # XML templates and local class setup
41
+ ```
42
+
43
+ ### 4. Use Syntax Command Before Commit (for CLAS, INTF, PROG, DDLS)
44
+
45
+ ```bash
46
+ abapgit-agent syntax --files src/zcl_my_class.clas.abap
47
+ ```
48
+
49
+ For dependent files (interface + class), skip `syntax` and go straight to `pull`.
50
+
51
+ ### 5. Use `ref`, `view` and `where` to Learn About Unknown Classes/Methods
52
+
53
+ ```bash
54
+ abapgit-agent where --objects ZIF_UNKNOWN_INTERFACE
55
+ abapgit-agent view --objects ZCL_UNKNOWN_CLASS
56
+ abapgit-agent view --objects ZCL_UNKNOWN_CLASS --full --lines # with line numbers for debugging
57
+ ```
58
+
59
+ ### 6. Troubleshooting
60
+
61
+ ```bash
62
+ abapgit-agent dump --date TODAY --detail 1 # inspect last crash (ST22)
63
+ abapgit-agent debug set --objects ZCL_FOO:42 # set breakpoint then attach
64
+ abapgit-agent ref --topic debug-session # full debug guide
65
+ abapgit-agent ref --topic debug-dump # dump analysis guide
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Development Workflow
71
+
72
+ ### Project-Level Config (`.abapgit-agent.json`)
73
+
74
+ Checked into the repository — applies to all developers. **Read this file at the start of every session.**
75
+
76
+ | Setting | Effect |
77
+ |---------|--------|
78
+ | `safeguards.requireFilesForPull: true` | Always include `--files` in every `pull` |
79
+ | `safeguards.disablePull: true` | Do not run `abapgit-agent pull` at all |
80
+ | `conflictDetection.mode: "abort"` | Abort pull on conflict — inform user |
81
+ | `transports.allowCreate/allowRelease: false` | Blocked — inform user |
82
+
83
+ ### Workflow Mode (`.abapGitAgent` → `workflow.mode`)
84
+
85
+ | Mode | Branch Strategy | Rebase Before Pull | Create PR |
86
+ |------|----------------|-------------------|-----------|
87
+ | `"branch"` | Feature branches | ✓ Always | ✓ Yes (squash merge) |
88
+ | `"trunk"` / not set | Direct to default branch | ✗ No | ✗ No |
89
+
90
+ ```bash
91
+ # branch mode — read full guide:
92
+ abapgit-agent ref --topic branch-workflow
93
+ ```
94
+
95
+ ### Quick Decision Tree
96
+
97
+ ```
98
+ Modified ABAP files?
99
+ ├─ CLAS/INTF/PROG/DDLS files?
100
+ │ ├─ Independent files? → syntax → commit → push → pull
101
+ │ └─ Dependent files? → skip syntax → commit → push → pull
102
+ └─ Other types (FUGR, TABL, etc.)?
103
+ → skip syntax → commit → push → pull → (if errors: inspect)
104
+ ```
105
+
106
+ ```bash
107
+ abapgit-agent ref --topic workflow-detailed # full workflow decision tree
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Project-Specific Naming Conventions
113
+
114
+ See `guidelines/objects.local.md` for this project's naming convention overrides.
package/abap/CLAUDE.md CHANGED
@@ -9,20 +9,26 @@ parent: ABAP Development
9
9
 
10
10
  This file provides guidelines for **generating ABAP code** in abapGit repositories.
11
11
 
12
- **Use this file as a template**: Copy it to your ABAP repository root when setting up new projects with Claude Code.
13
-
14
12
  ---
15
13
 
16
14
  ## Critical Rules
17
15
 
18
- ### 1. Use `ref` Command for Unfamiliar Topics
16
+ ### 1. Use `guide` and `ref` Commands for Unfamiliar Topics
19
17
 
20
- **When starting to work on ANY unfamiliar ABAP topic, syntax, or pattern, you MUST use the `ref` command BEFORE writing any code.**
18
+ **When starting a new session or working on ANY unfamiliar ABAP topic, syntax, or pattern:**
21
19
 
22
20
  ```
23
21
  ❌ WRONG: Start writing code immediately based on assumptions
24
- ✅ CORRECT: Run ref command first to look up the correct pattern
22
+ ✅ CORRECT: Run guide first, then ref for specific topics
23
+ ```
24
+
25
+ **Step 1 — Read the full dev guide at session start:**
26
+ ```bash
27
+ abapgit-agent guide
25
28
  ```
29
+ Covers the complete workflow, all critical rules, object naming, unit testing, debugging, and the full guidelines index.
30
+
31
+ **Step 2 — Look up specific syntax or topics with ref:**
26
32
 
27
33
  **Why**: ABAP syntax is strict. Guessing leads to activation errors that waste time.
28
34
 
@@ -81,7 +87,7 @@ The folder is configured in `.abapGitAgent` (property: `folder`):
81
87
  ### 3. Create XML Metadata / Local Classes
82
88
 
83
89
  Each ABAP object needs an XML metadata file. Local helper/test-double classes use separate `.locals_def.abap` / `.locals_imp.abap` files.
84
- → See `guidelines/object-creation.md` for XML templates and local class setup
90
+ → See `guidelines/object-creation.md` run: `abapgit-agent ref --topic object-creation`
85
91
 
86
92
  ---
87
93
 
@@ -133,18 +139,19 @@ abapgit-agent pull --files src/zif_my_intf.intf.abap,src/zcl_my_class.clas.abap
133
139
 
134
140
  ### 5. Local Helper / Test-Double Classes
135
141
 
136
- → See `guidelines/object-creation.md` for local class setup (`locals_def.abap` / `locals_imp.abap`)
142
+ → See `guidelines/object-creation.md` run: `abapgit-agent ref --topic object-creation`
137
143
 
138
144
  ---
139
145
 
140
- ### 6. Use `ref`, `view` and `where` Commands to Learn About Unknown Classes/Methods
146
+ ### 6. Use `guide`, `ref`, `view` and `where` Commands to Learn About Unknown Classes/Methods
141
147
 
142
148
  **When working with unfamiliar ABAP classes or methods, follow this priority:**
143
149
 
144
150
  ```
145
151
  1. First: Check local git repo for usage examples
146
- 2. Second: Check ABAP reference/cheat sheets
147
- 3. Third: Use view/where commands to query ABAP system (if needed)
152
+ 2. Second: Run abapgit-agent guide for the full ABAP dev guide
153
+ 3. Third: Use ref for specific syntax/topic details
154
+ 4. Fourth: Use view/where commands to query ABAP system (if needed)
148
155
  ```
149
156
 
150
157
  #### Priority 1: Check Local Git Repository
@@ -154,7 +161,16 @@ abapgit-agent pull --files src/zif_my_intf.intf.abap,src/zcl_my_class.clas.abap
154
161
  - Check how similar classes are implemented
155
162
  - This gives the most relevant context for your project
156
163
 
157
- #### Priority 2: Check ABAP References
164
+ #### Priority 2: Read the ABAP Development Guide
165
+
166
+ ```bash
167
+ # Read the full bundled ABAP dev guide (workflow, patterns, guidelines index)
168
+ abapgit-agent guide
169
+ ```
170
+
171
+ This covers the complete development workflow, coding guidelines, object naming, unit testing patterns, and debugging guide. Always up-to-date with the installed package version.
172
+
173
+ #### Priority 3: Check ABAP References
158
174
 
159
175
  ```bash
160
176
  # Search in ABAP cheat sheets and guidelines
@@ -163,7 +179,7 @@ abapgit-agent ref "INTERFACE"
163
179
  abapgit-agent ref --topic classes
164
180
  ```
165
181
 
166
- #### Priority 3: Use `where` and `view` Commands (Query ABAP System)
182
+ #### Priority 4: Use `where` and `view` Commands (Query ABAP System)
167
183
 
168
184
  **If local/references don't have the answer, query the ABAP system:**
169
185
 
@@ -180,6 +196,13 @@ abapgit-agent view --objects ZCL_UNKNOWN_CLASS
180
196
 
181
197
  # View specific METHOD implementation
182
198
  abapgit-agent view --objects ZCL_UNKNOWN_CLASS=============CM001
199
+
200
+ # View FULL source (definition + all method implementations)
201
+ abapgit-agent view --objects ZCL_UNKNOWN_CLASS --full
202
+
203
+ # View FULL source with dual line numbers (for setting breakpoints)
204
+ # G [N] code — G = global line for debug set, [N] = include-relative
205
+ abapgit-agent view --objects ZCL_UNKNOWN_CLASS --full --lines
183
206
  ```
184
207
 
185
208
  **Example workflow for AI:**
@@ -188,9 +211,9 @@ User: "How do I use ZCL_ABGAGT_AGENT?"
188
211
 
189
212
  AI thought process:
190
213
  1. Search local repo for ZCL_ABGAGT_AGENT usage
191
- 2. Found: It's instantiated in several places with ->pull() method
192
- 3. Still unclear about parameters? Check view command
193
- 4. View: abapgit-agent view --objects ZCL_ABGAGT_AGENT
214
+ 2. Run: abapgit-agent guide ← check if covered in the dev guide
215
+ 3. Run: abapgit-agent ref "ZCL_ABGAGT_AGENT" ← search guidelines
216
+ 4. Still unclear? Run: abapgit-agent view --objects ZCL_ABGAGT_AGENT
194
217
  ```
195
218
 
196
219
  **Key differences:**
@@ -202,7 +225,7 @@ AI thought process:
202
225
  ### 7. CDS Unit Tests
203
226
 
204
227
  Use `CL_CDS_TEST_ENVIRONMENT` for unit tests that read CDS views.
205
- → See `guidelines/cds-testing.md` for code examples
228
+ → See `guidelines/cds-testing.md` run: `abapgit-agent ref --topic cds-testing`
206
229
 
207
230
  ---
208
231
 
@@ -237,7 +260,7 @@ After activating a class, stop and tell the user: `"Class is activated. Run with
237
260
 
238
261
  By default, probe/throwaway classes may be created in the current project. When `disableProbeClasses: true` is set in `.abapgit-agent.json`, they must go to `scratchWorkspace` instead. If `scratchWorkspace` is also not configured, refuse and guide the user to set it up.
239
262
 
240
- → See `guidelines/run-probe-classes.md` for naming conventions, full workflow, and refusal guidance
263
+ → See `guidelines/run-probe-classes.md` run: `abapgit-agent ref --topic run-probe-classes`
241
264
 
242
265
  ---
243
266
 
@@ -248,7 +271,7 @@ By default, probe/throwaway classes may be created in the current project. When
248
271
  | HTTP 500 / runtime crash (ST22) | `dump` | Error already occurred |
249
272
  | Wrong output, no crash | `debug` | Need to trace logic |
250
273
 
251
- → See `guidelines/debug-dump.md` for dump analysis workflow
274
+ → See `guidelines/debug-dump.md` run: `abapgit-agent ref --topic debug-dump`
252
275
 
253
276
  **Critical rules for `debug` sessions:**
254
277
 
@@ -258,6 +281,21 @@ By default, probe/throwaway classes may be created in the current project. When
258
281
  4. **Never pass `--session`** to `step/vars/stack` — it bypasses the daemon and causes errors
259
282
  5. **Always finish with `step --type continue --json`** — releases the frozen ABAP work process
260
283
 
284
+ **Finding the right line number for a breakpoint:**
285
+
286
+ Use `view --full --lines` to get assembled-source global line numbers (the `G` column) — these are the coordinates ADT accepts for breakpoints:
287
+
288
+ ```bash
289
+ abapgit-agent view --objects ZCL_FOO --full --lines
290
+ ```
291
+
292
+ Output format: `G [N] code` where `G` = global line (use with `debug set`) and `[N]` = include-relative (for navigation only).
293
+
294
+ ```bash
295
+ # Example: METHOD do_something. starts at global line 87
296
+ abapgit-agent debug set --objects ZCL_FOO:90 # set BP a few lines after METHOD statement
297
+ ```
298
+
261
299
  Minimal correct sequence:
262
300
  ```bash
263
301
  abapgit-agent debug set --objects ZCL_FOO:42 # 1. set breakpoint
@@ -269,7 +307,7 @@ abapgit-agent debug vars --json
269
307
  abapgit-agent debug step --type continue --json # 4. release
270
308
  ```
271
309
 
272
- → See `guidelines/debug-session.md` for full debug session guide, breakpoint tips, and pull flow architecture
310
+ → See `guidelines/debug-session.md` run: `abapgit-agent ref --topic debug-session`
273
311
 
274
312
  ---
275
313
 
@@ -308,7 +346,7 @@ See **AI Tool Guidelines** below for how to react to each setting.
308
346
  ### Branch Workflow (`"mode": "branch"`)
309
347
 
310
348
  Always work on feature branches. Before every `pull`: rebase to default branch. On completion: create PR with squash merge.
311
- → See `guidelines/branch-workflow.md` for step-by-step commands and examples
349
+ → See `guidelines/branch-workflow.md` run: `abapgit-agent ref --topic branch-workflow`
312
350
 
313
351
  ### Trunk Workflow (`"mode": "trunk"`)
314
352
 
@@ -404,12 +442,19 @@ Modified ABAP files?
404
442
  └─ ✅ Use: skip syntax → commit → push → pull → (if errors: inspect)
405
443
  ```
406
444
 
407
- → See `guidelines/workflow-detailed.md` for full workflow decision tree, error indicators, and complete command reference
445
+ → See `guidelines/workflow-detailed.md` run: `abapgit-agent ref --topic workflow-detailed`
408
446
 
409
447
  ---
410
448
 
411
449
  ## Guidelines Index
412
450
 
451
+ > **Note:** If the `guidelines/` folder doesn't exist in your repo, the `ref` command
452
+ > automatically uses bundled guidelines from the package. Access them with:
453
+ > ```bash
454
+ > abapgit-agent ref --topic <topic> # e.g. ref --topic sql
455
+ > abapgit-agent ref "<pattern>" # e.g. ref "SELECT"
456
+ > ```
457
+
413
458
  Detailed guidelines are available in the `guidelines/` folder:
414
459
 
415
460
  | File | Topic |
@@ -0,0 +1,42 @@
1
+ # ABAP Development
2
+
3
+ This project uses [abapgit-agent](https://github.com/SylvosCai/abapgit-agent) for ABAP development.
4
+
5
+ ## IMPORTANT: Before Writing Any ABAP Code
6
+
7
+ Read the full ABAP development guide by running:
8
+
9
+ ```bash
10
+ abapgit-agent guide
11
+ ```
12
+
13
+ This guide covers: development workflow, ABAP syntax guidelines, object naming, unit testing, and debugging.
14
+
15
+ > **Humans:** Full guide online at https://sylvoscai.github.io/abapgit-agent/pages/abap-coding-guidelines.html
16
+
17
+ ## Accessing Guidelines
18
+
19
+ Search by keyword to find which file covers a topic, then read the full file with `--topic`:
20
+
21
+ ```bash
22
+ # Find files matching a keyword
23
+ abapgit-agent ref "debug session"
24
+
25
+ # Read a full guideline file by filename stem
26
+ abapgit-agent ref --topic debug-session # guidelines/debug-session.md
27
+ abapgit-agent ref --topic workflow-detailed # guidelines/workflow-detailed.md
28
+ abapgit-agent ref --topic object-creation # guidelines/object-creation.md
29
+ abapgit-agent ref --topic branch-workflow # guidelines/branch-workflow.md
30
+ abapgit-agent ref --topic debug-dump # guidelines/debug-dump.md
31
+ abapgit-agent ref --topic run-probe-classes # guidelines/run-probe-classes.md
32
+ abapgit-agent ref --topic cds-testing # guidelines/cds-testing.md
33
+
34
+ # Also available: sql, cds, exceptions, json, testing, objects, abapgit, classes, ...
35
+ abapgit-agent ref --list-topics
36
+ ```
37
+
38
+ The `ref` command uses bundled guidelines automatically — no local `guidelines/` folder needed.
39
+
40
+ ## Project-Specific Naming Conventions
41
+
42
+ See `guidelines/objects.local.md` for this project's naming convention overrides.
@@ -20,8 +20,7 @@ Test Class | zcl_*.clas.testclasses.abap | zcl_*.clas.xml
20
20
  Interface | zif_*.intf.abap | zif_*.intf.xml
21
21
  Program | z*.prog.abap | z*.prog.xml
22
22
  Table | z*.tabl.abap | z*.tabl.xml
23
- CDS View | zc_*.ddls.asddls | zc_*.ddls.xml
24
- CDS Entity | ze_*.ddlx.asddlx | ze_*.ddlx.xml
23
+ CDS View (DDLS) | zc_*.ddls.asddls | zc_*.ddls.xml
25
24
  Data Element | z*.dtel.abap | z*.dtel.xml
26
25
  Structure | z*.stru.abap | z*.stru.xml
27
26
  Table Type | z*.ttyp.abap | z*.ttyp.xml
@@ -33,7 +32,7 @@ Key XML Settings:
33
32
  Class STATE: 1=Active
34
33
  Table TABCLASS: TRANSP, POOL, CLUSTER
35
34
  Table DELIVERY: A=Application, C=Customizing
36
- CDS SOURCE_TYPE: V=View, C=Consumption
35
+ CDS SOURCE_TYPE: W=View Entity (modern), V=View (legacy)
37
36
  Test Class XML: <WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
38
37
  Local Classes: <CLSCCINCL>X</CLSCCINCL>
39
38
  ```
@@ -175,44 +174,12 @@ abapGit needs XML files to:
175
174
 
176
175
  ---
177
176
 
178
- ### CDS View Entity (DDLS) - RECOMMENDED
179
-
180
- **Use by default when user says "create CDS view"**
181
-
182
- **Filename**: `src/zc_my_entity.ddls.xml`
183
-
184
- ```xml
185
- <?xml version="1.0" encoding="utf-8"?>
186
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_DDLS" serializer_version="v1.0.0">
187
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
188
- <asx:values>
189
- <DDLS>
190
- <DDLNAME>ZC_MY_ENTITY</DDLNAME>
191
- <DDLANGUAGE>E</DDLANGUAGE>
192
- <DDTEXT>My CDS View Entity</DDTEXT>
193
- <SOURCE_TYPE>W</SOURCE_TYPE>
194
- </DDLS>
195
- </asx:values>
196
- </asx:abap>
197
- </abapGit>
198
- ```
199
-
200
- **Key Points for CDS View Entities**:
201
- 1. **ABAP file extension**: Use `.ddls.asddls` (NOT `.ddls.abap`)
202
- 2. **XML file**: Use `.ddls.xml`
203
- 3. **DDLNAME**: Must match the CDS view entity name in the source
204
- 4. **SOURCE_TYPE**: `W` = View Entity (modern, recommended)
205
- 5. **Serializer**: Use `LCL_OBJECT_DDLS`
206
- 6. **Source file**: Use `define view entity` (no `@AbapCatalog.sqlViewName`)
207
-
208
- ---
209
-
210
- ### CDS View (DDLS) - Legacy Only
211
-
212
- **Only use when explicitly requested (e.g., "create legacy CDS view")**
177
+ ### CDS View / View Entity (DDLS)
213
178
 
214
179
  **Filename**: `src/zc_my_view.ddls.xml`
215
180
 
181
+ The XML format is identical for both types — only `SOURCE_TYPE` differs:
182
+
216
183
  ```xml
217
184
  <?xml version="1.0" encoding="utf-8"?>
218
185
  <abapGit version="v1.0.0" serializer="LCL_OBJECT_DDLS" serializer_version="v1.0.0">
@@ -222,22 +189,17 @@ abapGit needs XML files to:
222
189
  <DDLNAME>ZC_MY_VIEW</DDLNAME>
223
190
  <DDLANGUAGE>E</DDLANGUAGE>
224
191
  <DDTEXT>My CDS View</DDTEXT>
225
- <SOURCE_TYPE>V</SOURCE_TYPE>
192
+ <SOURCE_TYPE>W</SOURCE_TYPE>
226
193
  </DDLS>
227
194
  </asx:values>
228
195
  </asx:abap>
229
196
  </abapGit>
230
197
  ```
231
198
 
232
- **Key Points for CDS Views (Legacy)**:
233
- 1. **ABAP file extension**: Use `.ddls.asddls` (NOT `.ddls.abap`)
234
- 2. **XML file**: Use `.ddls.xml`
235
- 3. **DDLNAME**: Must match the CDS view name in the source
236
- 4. **SOURCE_TYPE**: `V` = View (legacy)
237
- 5. **Serializer**: Use `LCL_OBJECT_DDLS`
238
- 6. **Source file**: Must include `@AbapCatalog.sqlViewName` annotation
199
+ - `SOURCE_TYPE W` View Entity (`define view entity`, modern, **use by default**)
200
+ - `SOURCE_TYPE V` View (`define view` + `@AbapCatalog.sqlViewName`, legacy — only if explicitly requested)
239
201
 
240
- **For detailed comparison and usage guidance, see `guidelines/cds.md`**
202
+ For DDL source syntax and full guidance: `abapgit-agent ref --topic cds-abapgit`
241
203
 
242
204
  ---
243
205
 
@@ -22,4 +22,7 @@ grand_parent: ABAP Development
22
22
  - Testing specific scenarios that may not exist in production
23
23
  - Fast, isolated tests that don't depend on database state
24
24
 
25
- See `guidelines/testing.md` for code examples.
25
+ See `abapgit-agent ref --topic testing` for full code examples including:
26
+ - Basic CDS test double setup
27
+ - Testing CDS views with aggregations (insert into base tables)
28
+ - Testing CDS views that select from another CDS view (`create_for_multiple_cds`)